delphi7 xml通用解析转换为stringgrid
对于有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的更多相关文章
- xml 字符串解析成通用的map
[quote]Stax解析技术:快速高效,根据流的形式解析xml,比dom解析技术更加快,dom解析技术是基于文档结构树的,会把整个dom文件树加载到内存进行解析[/quote] package co ...
- 关于C#对Xml数据解析
首先进行简单说明Xml 与Html 和 XAML数据标签的差别. 1.Xml属于数据文本, 被设计为传输和存储数据,其焦点是数据的内容.它与json格式数据相似,可作为服务数据传输类型. 其中XML ...
- Spring源码阅读笔记04:默认xml标签解析
上文我们主要学习了Spring是如何获取xml配置文件并且将其转换成Document,我们知道xml文件是由各种标签组成,Spring需要将其解析成对应的配置信息.之前提到过Spring中的标签包括默 ...
- Qt之xml文件解析
XML文件简介 XML - EXtensible Markup Language,可拓展标记语言 Qt中加载XML模块 .pro 文件中添加 QT += xml Qt的XML访问方式 引用:https ...
- xml的解析与创建——bing到youdao导入文件的转换
首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...
- iOS - XML 数据解析
前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...
- iOS开发——网络Swift篇&JSON与XML数据解析
JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SD ...
- PHP XML Expat 解析器
PHP XML Expat 解析器 内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能. XML 是什么? XML 用于描述数据,其焦点是数据是什么.XML 文件描述了数据的结构. ...
- 03-IOSCore - XML及解析、Plist
一.XML 可扩展标记语言 是什么?是一段有规范的字符串, 用在哪?用在任何地方 语法: * 结点Node <结点名 属性名="属性值"> 结点内容 </结点名& ...
随机推荐
- Atititjs javascript异常处理机制java异常转换.js exception process
Atititjs javascript异常处理机制java异常的转换.js exception process 1. javascript异常处理机制 Throw str Not throw erro ...
- WPF多线程UI更新
前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象.)这是很常见的一个错误,一不小 ...
- hdu 2037 这个夏天不AC
这个夏天不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- python栈--字符串反转,括号匹配
栈的实现: # 定义一个栈类 class Stack(): # 栈的初始化 def __init__(self): self.items = [] # 判断栈是否为空,为空返回True def isE ...
- 《网络编程》ioctl 操作
概要 ioctl 功能与 fcntl 功能类似,它可以被用于描述操作的叙述字符,获取或设置属性的描述是开放式的叙事休息,但在网络编程的两个功能有关的不同类型的操作.fcntl 作.文件操作,而 ioc ...
- Python Numpy基础教程
Python Numpy基础教程 本文是一个关于Python numpy的基础学习教程,其中,Python版本为Python 3.x 什么是Numpy Numpy = Numerical + Pyth ...
- WPF扑克牌之红桃K
原文:WPF扑克牌之红桃K 有些什么用途呢?我想,如果你有兴趣,可用来制作WPF扑克牌游戏. 没有任何技术含量,需要做的是在Blend中绘图或者使用Illustrator,CoreDraw等矢图设计软 ...
- 《The Economist》的阅读
cover story(封面故事): Clean energy's dirty secret:清洁能源的肮脏幕后: 0. 词汇 respite:n. 缓解:暂缓:暂时的休息:缓期执行:也作及物动词(v ...
- SecureCRT 专题
SecureCRT在同一窗口打开多个标签:选中“在标签页中打开”即可 SecureCRT同时向多个tab窗口发送相同的命令 Step by step: 作为管理N台服务器,而又要执行相同命令又不想用脚 ...
- SIIA CODIE AWARDS 2017
Business Technology Best Advertising or Campaign Management Platform Albert, Albert Choozle, Choozle ...