怎样读取XML中的数据(100分)

  • 主题发起人 主题发起人 dai_wei
  • 开始时间 开始时间
D

dai_wei

Unregistered / Unconfirmed
GUEST, unregistred user!
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Jbcityinfo>
<Cityid>010</Cityid>
<Cityname>北京</Cityname>
</Jbcityinfo>
<Jbcityinfo>
<Cityid>0755</Cityid>
<Cityname>深圳</Cityname>
</Jbcityinfo>
<Jbcityinfo>
<Cityid>020</Cityid>
<Cityname>广州</Cityname>
</Jbcityinfo>
<Jbcityinfo>
<Cityid>0769</Cityid>
<Cityname>珠海</Cityname>
</Jbcityinfo>
</NewDataSet>
我想循环读取其中的数据,用delphi怎么实现?
 
//一下函数为读取一个指定的xml文件内容,包括自动读取属性和属性值。将结果写到一个memo里。代码:wlh 080330
//合适2级结构
function getxml(xmlfilename:string;xml:Txmldocument;memo:Tmemo):string;
var xmlnode1,rootnode:Ixmlnode;
i,j,m,n,p:integer;
nodename:string;
begin
memo.Clear ;
xml.FileName:=xmlfilename;
xml.Active:=true;
i:=0;
rootnode:= xml.DocumentElement;
xmlnode1:= xml.DocumentElement;
j:=rootnode.ChildNodes.Count;//根下有多少个一级节点
for i:=0 to rootnode.ChildNodes.Count- 1do

begin
n:=rootnode.ChildNodes.ChildNodes.Count ;//每个节点下有多少属性项
for p := 0 to n- 1do
begin
xmlnode1:=rootnode.ChildNodes.ChildNodes[p];
nodename:=xmlnode1.NodeName ;//属性项的名称
memo.Lines.Add((nodename+': '+xmlnode1.Text));//属性值

end;
memo.Lines.Add('------------------------------------------------------------------') ;

end;
end;

类似如下结构:
<NewDataSet> //根
//一级节点1
- <Table>
<Country>China</Country> //节点下属性1名称和值
<City>Beijing</City> //节点下属性2名称和值
</Table>
//一级节点2
- <Table>
<Country>China</Country>
<City>Hohhot</City>
</Table>
.....
 
clientdataset可以直接loadFromFile
 
wlh_1的方法很不错,我试过,这个方法很好
kite20020304提的TNativeXML 这个我不太会用
hjp0214的办法如果不连表的话,好像不能解析得出数据哦.
还有没有其他的办法,我想得到更多的方法.
 
uses
xmldoc,xmldom;
//微软,delphi自带的 好好研究下,这个比较好
可以使用delphi xml data binding 向导,帮你建立自动的读写属性,这个功能非常好,不需要像wlh_1的方法那样读写,可读性比较差
 
问题解答了,该结贴了,别伤了大家的心啊
 
谢谢大家
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
937
SUNSTONE的Delphi笔记
S
后退
顶部