1:
<?xml version="1.0" encoding="UTF-8"?>
<Result>
<Status>00</Status>
<Services><Service>
<Service_id>CA_O_SAPP_IN_10000180</Service_id>
<Service_name>常住人口服务方</Service_name>
<Service_status>00</Service_status>
<Hc_result>1</Hc_result>
<Zps><zp>aaa</zp></Zps>
</Service></Services>
</Result>如何解析1:中的数据
结果应该是:
Status=00
Service_id=CA_O_SAPP_IN_10000180
Service_name=常住人口服务方
Service_status=00
Hc_result=1
zp=aaa2:
<?xml version="1.0" encoding="UTF-8"?>
<Result>
<Status>00</Status>
<CurPage>1</CurPage>
<TotalNum>1</TotalNum>
<Rows><Row>
<Col Name="FQZJHM">350322193202163023</Col>
<Col Name="MQZJHM">350322193402163087</Col>
<Col Name="SFZH">350322196806133045</Col>
<Col Name="JG">福建省</Col>
<Col Name="XM">詹良娇</Col>
<Col Name="XB">女</Col>
<Col Name="MZ">汉</Col>
<Col Name="ZZXZ">福建省至亭路69-4号</Col>
<Col Name="XP">aafsas</Col>
<Col Name="FQXM">詹元碗</Col>
<Col Name="MQXM">林瑞英</Col>
<Col Name="CSRQ">19680613</Col>
</Row></Rows>
</Result>
如何解析2:中的数据
结果应该是:
FQZJHM=350322193202163023
MQZJHM=350322193402163087
SFZH=350322196806133045
JG=福建省
XM=詹良娇
XB=女
MZ=汉
ZZXZ=福建省至亭路69-4号
XP=aafsas
FQXM=詹元碗
MQXM=林瑞英
CSRQ=19680613

解决方案 »

  1.   

    请问给位大侠,用delphi 7 如何把 1:和2:中xml数据解析成问题中的结果。
      

  2.   

    建议使用TXMLDocument;
    或第三方控件 NativeXml,。
      

  3.   

    self.XMLDocument1.LoadFromFile("");
    XMLDocument1.DocumentElement.ChildNodes.FindNode("Status").NodeValue
      

  4.   

    使用TXMLDocument控件可以轻意解释
    用法参考http://www.codes51.com/article/detail_22765.html
      

  5.   

    自己定义RECORD,如果程序需要简单直接的方法。
    注意:UTF-8编码和ANSI编码之间的转换
      

  6.   

    1、读取XML
      Memo1.Clear;
      XMLDocument1.LoadFromFile(MainPath+'20140606.xml');          // 读取XML文件
      Memo1.Lines.Text := FormatXMLData(XMLDocument1.XML.Text);    // 查看格式化文本2、加载内存文件
    var ms: TMemoryStream;
    begin
      ms := TMemoryStream.Create;
      ms.LoadFromFile(MainPath+'test.xml');
      XMLDocument1.LoadFromStream(ms);
      ms.Free;
      Memo1.Lines := XMLDocument1.XML; {查看}3、创建XML
    var XML1:TXMLDocument;
        Node:IXMLNode;             // 根结点
        node1,node2:IXMLNode;      // 子结点
    begin
      XML1:=TXMLDocument.Create(nil);
      XML1.Active:=True;
      XML1.Version:='1.0';
      XML1.Encoding:='gb2312';
      Node:=XML1.AddChild('科室名单');      // 第一个节点是根节点, Root指向根节点
      Node.SetAttribute('备注', '测试');            // 为根节点设置属性  职务,科长
      Node.SetAttribute('备注', '正局级');  Node1 := Node.AddChild('人员');                // 为根节点添加子节点, 当前 pNode 指向“人员”节点
      Node1.SetAttribute('职务', '科长');            // 设置属性 (属性名,属性值)
      Node1.SetAttribute('备注', '正局级');  Node2 := Node1.AddChild('姓名');              // 为 pNode 添加子节点
      Node2.Text := '张三';                         // 为 pNode 添加文本值
      Node2.SetAttribute('职务', '科长');           // 设置属性 (属性名,属性值)
      Node2.SetAttribute('备注', '正局级');
      Node2 := Node.AddChild('性别');
      Node2.Text := '男';  Node2 := Node1.AddChild('年龄');
      Node2.Text := '34';  Node2 := Node1.AddChild('AAA');
      Node2 := Node1.AddChild('BBB');
      Node2.SetAttribute('职务', '科长');           // 设置属性 (属性名,属性值)
      Node2.SetAttribute('备注', '正局级');  Node2 := Node1.AddChild('CCC');
      Node2.SetAttribute('职务', '科长');           // 设置属性 (属性名,属性值)
      Node2.SetAttribute('备注', '正局级');
      

  7.   

    http://download.csdn.net/detail/frtrnr/4518467
      

  8.   

    4、解析XML
    procedure TForm1.Button23Click(Sender: TObject);
    var XMLRootNode,XMLnode1,XMLnode2,XMLnode3,XMLnode4,XMLnode5:IXMLNode;
    begin
      XMLDocument1.XML.Clear;
      XMLDocument1.FileName :=MainPath+'test.xml';
      XMLDocument1.Active := True;     {激活}
      XMLRootNode:=XMLDocument1.DocumentElement;
      Memo1.Text :=  ReadXml(XMLRootNode);
    //  XMLDocument1.DocumentElement:=XMLRootNode;
    //  XMLDocument1.SaveToFile(MainPath+'test4.xml');                                        // 保存XML文件
    //  Memo1.Lines.Text := FormatXMLData(XMLDocument1.XML.Text);
    end;procedure TForm1.Button24Click(Sender: TObject);  
    var i,j,k,k1,k2:integer;
        nodeList,nodeList1,nodeList2,nodeList3,nodeList4:IXMLNodeList;
        XMLRootNode,XMLnode1,XMLnode2,XMLnode3,XMLnode4,XMLnode5:IXMLNode;
    begin
      XMLDocument1.FileName := 'Test.xml';
      XMLDocument1.Active := True;     {激活}
      Memo1.Lines.Text := FormatXMLData(XMLDocument1.XML.Text);
      XMLRootNode := XMLDocument1.DocumentElement;              // 根节点
    //  XMLRootNode.SetAttribute;
      XMLDocument1.SaveToFile('D:\test6.xml');                                        // 保存XML文件
      Memo2.Lines.Add('0根节点:'+XMLRootNode.nodeName+',子节点: '+IntToStr( XMLRootNode.ChildNodes.Count));
      NodeList:=XMLRootNode.ChildNodes;                         // 第1级
      fOR I:=0 TO NodeList.Count-1 DO
      BEGIN
        XMLNode1:=NodeList.Get(i);
        If XMLNode1.HasChildNodes then
        begin
          if XMLNode1.IsTextElement
            then Memo2.Lines.Add('1  节点 '+IntToStr(i+1)+' '+XMLNode1.NodeName+' 属性文本')
            else Memo2.Lines.Add('1  节点 '+IntToStr(i+1)+' '+XMLNode1.NodeName);
          nodeList1:=XMLNode1.ChildNodes;                     // 第2级
          For j:=0 TO NodeList1.Count-1 DO
          begin
            XMLNode2:=NodeList1.Get(j);
            If XMLNode2.HasChildNodes then
            begin
              if XMLNode2.IsTextElement
                then Memo2.Lines.Add('2      节点 '+IntToStr(j+1)+' '+XMLNode2.NodeName+' 属性文本')
                else Memo2.Lines.Add('2      节点 '+IntToStr(j+1)+' '+XMLNode2.NodeName);
              nodeList2:=XMLNode2.ChildNodes;                   // 第2级
              fOR k:=0 TO NodeList2.Count-1 DO
              BEGIN
                XMLNode3:=NodeList2.Get(k);
                If XMLNode3.HasChildNodes then
                begin
                  if XMLNode3.IsTextElement
                    then Memo2.Lines.Add('3           节点 '+IntToStr(k+1)+' '+XMLNode3.NodeName+' 属性文本')
                    else Memo2.Lines.Add('3           节点 '+IntToStr(k+1)+' '+XMLNode3.NodeName);
                  NodeList3:=XMLNode3.ChildNodes;                   // 第2级
                  fOR k1:=0 TO NodeList3.Count-1 DO
                  BEGIN
                    XMLNode4:=NodeList3.Get(k1);
                    If XMLNode4.HasChildNodes then
                    begin
                      if XMLNode4.IsTextElement
                        then Memo2.Lines.Add('3           节点 '+IntToStr(k1+1)+' '+XMLNode4.NodeName+' 属性文本')
                        else Memo2.Lines.Add('3           节点 '+IntToStr(k1+1)+' '+XMLNode4.NodeName);
                      NodeList4:=XMLNode4.ChildNodes;                   // 第2级
                      fOR k2:=0 TO NodeList4.Count-1 DO
                      BEGIN
                        XMLNode5:=NodeList4.Get(k2);
                        if XMLNode5.HasChildNodes then
                        begin
                          if XMLNode5.IsTextElement
                            then Memo2.Lines.Add('4                  节点 '+IntToStr(k2+1)+' '+XMLNode5.NodeName+' 属性文本')
                            else Memo2.Lines.Add('4                  节点 '+IntToStr(k2+1)+' '+XMLNode5.NodeName);
                        end;
                      end;
                    end;
                  end;
                end;
              end;
            end;
          end;
        end;
      end;
    end;