Delphi 怎样读取指定xml文件中的节点

syluoping 2012-12-20 01:39:06
<?xml version="1.0"?>
<root>
<head>
<code>1</code>
<message>%E6%95%B0%E6%8D%AE%E4%B8%8B%E8%BD%BD%E6%88%90%E5%8A%9F%EF%BC%81</message>
<rownum>1</rownum>
</head>
<body>
<veh id="0">
<jyw>377B630005028197F280F1FE7563010906036E7F75753C4001455C475B6C505B421E080503640101070402730006777F0201070909005B4672445C41591D505F4135</jyw>
<zdyzt></zdyzt>
<jkpz></jkpz>
<hmbh></hmbh>
<hphm>DUS526</hphm>
<lxdh></lxdh>
<fzjg>%E5%86%80D</fzjg>
<hbdbqk>GB18352.3-2005%E5%9B%BD%E2%85%A3</hbdbqk>
<fzrq>2011-03-14+17%3A00%3A54.0</fzrq>
<qzbfqz>2099-12-31+00%3A00%3A00.0</qzbfqz>
<dwbh></dwbh>
<clxh>FV7162XG</clxh>
<gcjk>A</gcjk>
<hxnbkd></hxnbkd>
<hxnbcd></hxnbcd>
<zzg>156</zzg>
<clpp1>%E5%AE%9D%E6%9D%A5%E7%89%8C</clpp1>
<clpp2>BORA</clpp2>
<yxh></yxh>
<jyhgbzbh>131304031567</jyhgbzbh>
<zzl>1805</zzl>
<hdzk>5</hdzk>
<zj>2610</zj>
<fhgzrq>2011-03-14+17%3A01%3A46.0</fhgzrq>
<dzyx></dzyx>
<zs>2</zs>
<hpzk></hpzk>
<jbr>%E5%BC%A0%E9%87%91%E8%89%AF</jbr>
<zt>G</zt>
<hpzl>02</hpzl>
<zzz></zzz>
<cyry></cyry>
<bpcs>0</bpcs>
<clyt>P1</clyt>
<djrq>2011-03-14+00%3A00%3A00.0</djrq>
<sfzmhm>13042719790820391X</sfzmhm>
<zsxxdz>%E6%B2%B3%E5%8C%97%E7%9C%81%E9%82%AF%E9%83%B8%E5%B8%82%E7%A3%81%E5%8E%BF%E8%AE%B2%E6%AD%A6%E5%9F%8E%E9%95%87%E5%8D%97%E7%99%BD%E9%81%93%E6%9D%91%E5%85%AB%E7%BB%8412%E5%8F%B7</zsxxdz>
<jkpzhm></jkpzhm>
<zsxzqh>130427</zsxzqh>
<bz></bz>
<zbzl>1265</zbzl>
<fdjxh>CLS</fdjxh>
<pzbh1></pzbh1>
<xgzl>ABCDEJNOV</xgzl>
<pzbh2></pzbh2>
<qmbh></qmbh>
<xszbh>1330005465511</xszbh>
<sqdm>130427103207</sqdm>
<ltgg>195%2F65+R15</ltgg>
<xsjg></xsjg>
<xsrq></xsrq>
<fdjh>P10506</fdjh>
<dabh>130401104052</dabh>
<zdjzshs>4</zdjzshs>
<yzbm1>056500</yzbm1>
<yzbm2></yzbm2>
<yxqz>2013-03-31+00%3A00%3A00.0</yxqz>
<fprq>2011-03-14+16%3A22%3A50.0</fprq>
<csys>J</csys>
<qpzk></qpzk>
<xzqh>130427</xzqh>
<sjhm>13730035626</sjhm>
<dybj>1</dybj>
<ccrq>2011-02-23+00%3A00%3A00.0</ccrq>
<hxnbgd></hxnbgd>
<ccdjrq>2011-03-14+16%3A22%3A50.0</ccdjrq>
<fdjrq>2011-03-14+17%3A01%3A09.0</fdjrq>
<qlj>1517</qlj>
<hdzzl></hdzzl>
<cllx>K33</cllx>
<clly>1</clly>
<nszm></nszm>
<zxxs>1</zxxs>
<ytsx>9</ytsx>
<lsh>1D10314026550</lsh>
<djzsbh>130008228417</djzsbh>
<bzcs>0</bzcs>
<hdfs>A</hdfs>
<syq>2</syq>
<cwkc>4540</cwkc>
<syr>%E8%B5%B5%E6%9D%BE%E7%83%A8</syr>
<xsdw></xsdw>
<cwkg>1467</cwkg>
<gbthps></gbthps>
<cwkk>1775</cwkk>
<zqyzl></zqyzl>
<dphgzbh></dphgzbh>
<bxzzrq>2012-03-11+00%3A00%3A00.0</bxzzrq>
<zzxxdz>%E6%B2%B3%E5%8C%97%E7%9C%81%E9%82%AF%E9%83%B8%E5%B8%82%E7%A3%81%E5%8E%BF%E8%AE%B2%E6%AD%A6%E5%9F%8E%E9%95%87%E5%8D%97%E7%99%BD%E9%81%93%E6%9D%91%E5%85%AB%E7%BB%8412%E5%8F%B7</zzxxdz>
<bdjcs>0</bdjcs>
<zzxzqh>130427</zzxzqh>
<sfzmmc>A</sfzmmc>
<hgzbh>WAB021115510804</hgzbh>
<gl>77</gl>
<hlj>1493</hlj>
<llpz1></llpz1>
<syxz>A</syxz>
<llpz2></llpz2>
<lts>4</lts>
<rlzl>A</rlzl>
<xh>13040011037721</xh>
<glbm>130400000400</glbm>
<gxrq>2012-10-08+20%3A42%3A26.0</gxrq>
<zzcmc>%E4%B8%80%E6%B1%BD-%E5%A4%A7%E4%BC%97%E6%B1%BD%E8%BD%A6%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8</zzcmc>
<pl>1598</pl>
<clsbdh>LFV2A1152B3510804</clsbdh>
<nszmbh></nszmbh>
</veh>
</body></root>
我要读取其中veh中的某一个节点的值
...全文
1631 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2012-12-21
  • 打赏
  • 举报
回复
网上有实例的,建议楼主找找吧
CCC的 2012-12-20
  • 打赏
  • 举报
回复
procedure TfrmKCControl.LoadFromXML(stream: DOMString; iType: Integer; var iChanelno: Integer; var iRecCount: Integer; var iScreenNo: Integer; var bFlag: Boolean; var sDisplay: string; var iClass: Integer); var Root : IXMLNode; //指向XML根结点 Parent_Node: IXMLNode; Child_node : IXMLNode; i : integer; //循环变量 begin iChanelno := 0; iRecCount := 0; iScreenNo := 0; bFlag := True; sDisplay := ''; iClass := 0; try i := 0; CoInitialize(nil); if not xmlDoc.Active then xmlDoc.Active := True; XMLDoc.loadfromxml(stream); Root := xmlDoc.DocumentElement; //取XML文件的根结点 Parent_Node := Root.ChildNodes.First; if iType = $22 then iChanelno := StrToInt(Root.Attributes['CHNL_NO']) else if iType = $23 then begin iClass := StrToInt(Root.Attributes['TYPE']); iRecCount := StrToInt(Root.Attributes['RECCOUNT']); iScreenNo := StrToInt(Root.Attributes['SCREENNO']); end; while (Parent_Node <> nil) do begin if Parent_Node.NodeName = 'CHECK_RESULT' then begin bFlag := Copy(Parent_Node.Text, 2, 1) = '1'; end else if Parent_Node.NodeName = 'LED' then begin sDisplay := Parent_Node.Text; end; Parent_Node := Parent_Node.NextSibling; end; except end; end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧