<?xml version="1.0" encoding="gb2312"?>
<XNHData>
<head>
<sendTime>2010-01-04 12:55:41</sendTime>
</head>
<businessData>
<dataSet size="2">
<data type="wf_retrieve_person">
<wf_retrieve_person -02>韩兴进</wf_retrieve_person-02>
</data>
<data type="wf_retrieve_person">
<wf_retrieve_person-02>杨冬云 </wf_retrieve_person-02>
</data>
……
</dataSet>
</businessData>
</XNHData> 
                                       
如何读写这样的XML,我想读出来这两个人的数据哩?

解决方案 »

  1.   

    XMLDoc:TXMLDocument;//手动创建或者直接拖个
      try
        XMLDoc.FileName := filename;
        XMLDoc.Active := True;
        iNode:=XMLDoc.DocumentElement;
        while iNode <> nil do
        begin
          ProcessNode(iNode,nil);
          iNode := iNode.NextSibling;
        end;
        finally
        XMLDoc.Active := False;
      end;
      

  2.   

    procedure readXML;
    var
      XMLParser: TXMLDocument;
      RootNode,                //XNHData节点
      HeadNode,                //Head节点
      sendTimeNode,            //SendTime节点
      BizDataNode,             //businessData节点
      DataSetNode,             //DataSet节点 
      DataNode,                //Data节点
      PersonNode: IXMLNode;    //wf_retrieve_person节点
      SendTime: string;
      TypeValue, person: string;
    begin
      XMLParser := TXMLDocument.Create(self);
      try
        XMLParser.LoadFromFile(FileName);
        RootNode := XMLParser.DocumentElement.ChildNodes.First;
        if RootNode <> nil then
        begin
          //获取Head节点上的数据
          HeadNode := RootNode.ChildNodes.FindNode('head');
          if HeadNode <> nil then
          begin
            sendTimeNode := HeadNode.ChildNodes.FindNode('sendTime');
            if sendTimeNode <> nil then
              SendTime := sendTimeNode.NodeValue; //获取SendTime数据
          end;      //获取businessData节点上的数据
          BizDataNode := RootNode.ChildNodes.FindNode('businessData');
          if BizDataNode <> nil then
          begin
            DataSetNode := BizDataNode.ChildNodes.First; //获得DataSet节点
            if DataSetNode <> nil then
            begin
              DataNode := DataSetNode.ChildNodes.First;  //获得第一个Data节点          while DataNode <> nil then
              begin
                if DataNode.HasAttribute('type') then
                  TypeValue := DataNode.Attributes['type']; //获取Type属性值            PersonNode := DataNode.ChildNodes.First;   //获取Person节点
                if PersonNode <> nil then person := PersonNode.NodeValue;            DataNode := DataNode.NextSibling;  //获取下一个Data节点
              end;
            end;
          end;
        end;
      finally
        XMLParser.Free;
      end;
    end;