孤独的猫

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

遍历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;

 

posted on 2012-10-28 18:47  孤独的猫  阅读(174)  评论(0)    收藏  举报