对于有n多记录的xml,可以填充到stringgrid中

其中 vkeynode 为 xml中 重复节点

function CommonAnalyzeXml(vxml,vkeynode: string;var vgrid: TStringGrid): Boolean;

var
  lxml: TNativeXml;
  i,j,k: Integer;
  llist: TsdNodeList;
  lnode: TXmlNode;
  lstr: string;
  ls,lnamels: TStringList;
begin
  Result := False;
  vxml := StringReplace(vxml,'GB2312','UTF-8',[rfReplaceAll]);
  lxml := TNativeXml.Create(nil);
  lxml.ReadFromString(vxml);
  lnode := lxml.Root;
  if lnode <> nil then
  begin
    lnamels := TStringList.Create;
    GetXmlAllValues(lnamels,lnode,True);
    for i := 1 to vgrid.rowcount do
      for j := 1 to vgrid.colcount do
        vgrid.cells[j - 1, i - 1] := '';
    if lnamels.Count > 0 then
    begin
      vgrid.DefaultColWidth := 80;
      vgrid.DefaultRowHeight := 20;
      vgrid.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goRowSizing,goColSizing];
      i := 1;
      for j := 0 to lnamels.Count - 1 do
      begin
        if vgrid.ColCount < j then
        vgrid.ColCount := vgrid.ColCount + 1;
        vgrid.Cells[i,0] := lnamels.Strings[j];
        Inc(i);
      end;
      llist := TsdNodeList.Create(False);
      ls := TStringList.Create;
      lnode.FindNodes(vkeynode, llist);
      k := 1;
      for i := 0 to llist.Count - 1 do
      begin
        lnode := llist[i];
        ls.Clear;
        GetXmlAllValues(ls,lnode);
        if vgrid.RowCount < i then
        vgrid.RowCount := vgrid.RowCount + 1;
        for j := 0 to vgrid.ColCount - 1 do
        begin
          vgrid.Cells[j,k] := ls.Values[vgrid.Cells[j,0]];
        end;
        inc(k);
      end;
      FreeAndNil(llist);
      FreeAndNil(ls);
      Result := True;
    end;
    FreeAndNil(lnamels);
  end;
  FreeAndNil(lxml);
end;

http://blog.csdn.net/y281252548/article/details/52527843

delphi7 xml通用解析转换为stringgrid的更多相关文章

  1. xml 字符串解析成通用的map

    [quote]Stax解析技术:快速高效,根据流的形式解析xml,比dom解析技术更加快,dom解析技术是基于文档结构树的,会把整个dom文件树加载到内存进行解析[/quote] package co ...

  2. 关于C#对Xml数据解析

    首先进行简单说明Xml 与Html  和 XAML数据标签的差别. 1.Xml属于数据文本, 被设计为传输和存储数据,其焦点是数据的内容.它与json格式数据相似,可作为服务数据传输类型. 其中XML ...

  3. Spring源码阅读笔记04:默认xml标签解析

    上文我们主要学习了Spring是如何获取xml配置文件并且将其转换成Document,我们知道xml文件是由各种标签组成,Spring需要将其解析成对应的配置信息.之前提到过Spring中的标签包括默 ...

  4. Qt之xml文件解析

    XML文件简介 XML - EXtensible Markup Language,可拓展标记语言 Qt中加载XML模块 .pro 文件中添加 QT += xml Qt的XML访问方式 引用:https ...

  5. xml的解析与创建——bing到youdao导入文件的转换

    首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...

  6. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...

  7. iOS开发——网络Swift篇&JSON与XML数据解析

    JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit)   一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...

  8. PHP XML Expat 解析器

    PHP XML Expat 解析器 内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能. XML 是什么? XML 用于描述数据,其焦点是数据是什么.XML 文件描述了数据的结构. ...

  9. 03-IOSCore - XML及解析、Plist

    一.XML 可扩展标记语言 是什么?是一段有规范的字符串, 用在哪?用在任何地方 语法: * 结点Node <结点名 属性名="属性值"> 结点内容 </结点名& ...

随机推荐

  1. oracle常规任务

    # su - oracle  oracle> sqlplus "/as sysdba"  SQL> exec dbms_scheduler.disable('MONDA ...

  2. JAVA从本机获取IP地址

    JAVA从本机获取IP地址 论述: 此篇博客是在工作的时候,需要获得当前网络下面正确的ip地址,在网上查阅很多博客,网上一个比较普遍的说法是通过InetAddress.getLocalHost().g ...

  3. Winsock出错引起的断网

    背景 实验室有二十来台 PC 机,30+的服务器集群,网络拓扑比较复杂.简单地说,有网关连着校网,校网无法直接访问学校外的网络,只能通过拨 vpn 来实现外网访问.而校网最近也不稳定,时常断网. 今天 ...

  4. 国产操作系统剽窃Linux内核可耻!

    10月28日,新浪科技发表文章,题为"国产操作系统迎来利好:部委机构正大量採购",读后有感. 如今,国家进入法制时代.政府採购"国产操作系统",似乎成为一种&q ...

  5. wpf mvvm datagrid数据过滤

    原文:wpf mvvm datagrid数据过滤 datagrid数据过滤,你可以通过设置RowStyle属性,通过将Visibility绑定到ViewModel层的属性来控制是否可见,比如:   & ...

  6. Smali相关的基础知识点

    通过本篇博客的学习,相信你可以无压力的读懂Smali语言文件,并可以将Smali还原成java!!! 其实Smali语言并不是很难,如果你有一些汇编指令的基础,学习Smali就更加简单了,有兴趣的可以 ...

  7. 【转】NIO与传统IO的区别

    转自:http://blog.csdn.net/zhouhl_cn/article/details/6568119 传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时, ...

  8. chaos —— 混沌

    混沌,一个被严重滥用的物理数学概念. 混沌(chaos)是一个动力学系统(Dynamic System)概念,指的是确定性动力学系统因对初值敏感而表现出的不可预测的.类似随机性的运动. 1. 洛伦兹吸 ...

  9. HDU 3360 National Treasures 奇偶匹配的最低点覆盖

    标题来源:pid=3360">HDU 3360 National Treasures 意甲冠军:假设a[i][j] != -1 把他转成二进制 最多有12位 代表题目那张图的12个位置 ...

  10. 构建自己的PHP框架(邮件发送)

    完整项目地址:https://github.com/Evai/Aier 我们采用 'nette/mail' 包作为我们的邮件发送基础模块,在它的基础上封装一个 'Mail' 类,暴露出简洁的 API ...