遍历XML
遍历XML可用Delphi提供的XMLIntf单元,如果是汉字,必须指定其编码(Encoding :=GBK)
本文提供的XML文本内容为:
<?xml version="1.0" encoding="GBK" standalone="yes"?>
<output>
<sqldata>
<row>
<aac001>a1</aac001>
<aka130>b1</aka130>
<aka131>c1</aka131>
</row>
<row>
<aac001>a2</aac001>
<aka130>b2</aka130>
<aka131>c2</aka131>
</row>
</sqldata>
</output>
下面为遍历其内容的代码
procedure TForm1.Button3Click(Sender: TObject); var fdom:xmlintf.IXMLDocument; domList:IXMLNodeList; dom,ldom:IXMLNode; SXML:string; i,iCount:Integer; s:string; begin {fDom := NewXMLDocument(WideString('1.0')); SXML :=mmoXML.Lines.Text; fDom.LoadFromXML(sXML); fDom.Encoding := 'GBK'; dom :=fDom.DocumentElement.ChildNodes.Nodes['sqldata'].ChildNodes.Nodes['row'].ChildNodes.Nodes['systemdate']; if dom=nil then ShowMessage('0') else ShowMessage(vartostr(dom.NodeValue));} fDom := NewXMLDocument(WideString('1.0')); SXML :=mmoXML.Lines.Text; fDom.LoadFromXML(sXML); fDom.Encoding := 'GBK'; s :=''; domList :=fDom.DocumentElement.ChildNodes.Nodes['sqldata'].ChildNodes; showmessage(inttostr(domList.Count)); for i := 0 to domList.Count - 1 do begin ldom :=domList[i]; ShowMessage(ldom.NodeName); s :=s + vartostr(ldom.ChildNodes.Nodes['aac001'].NodeValue)+vartostr(ldom.ChildNodes.Nodes['aka130'].NodeValue)+#13#10 end; //Result :=VarToStr(fNode.NodeValue); showmessage(s); end;

浙公网安备 33010602011771号