急求 delphi 7 解析xml 数据

zyc520zyt 2014-10-27 04:32:37
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=aaa

2:
<?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
...全文
667 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2014-11-01
  • 打赏
  • 举报
回复
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;
frtrnr 2014-11-01
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/frtrnr/4518467
lyhoo163 2014-10-31
  • 打赏
  • 举报
回复
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('备注', '正局级');
缘中人 2014-10-28
  • 打赏
  • 举报
回复
self.XMLDocument1.LoadFromFile("");
XMLDocument1.DocumentElement.ChildNodes.FindNode("Status").NodeValue
lyhoo163 2014-10-28
  • 打赏
  • 举报
回复
建议使用TXMLDocument; 或第三方控件 NativeXml,。
doloopcn 2014-10-28
  • 打赏
  • 举报
回复
自己定义RECORD,如果程序需要简单直接的方法。 注意:UTF-8编码和ANSI编码之间的转换
chenyq2008 2014-10-28
  • 打赏
  • 举报
回复
使用TXMLDocument控件可以轻意解释 用法参考http://www.codes51.com/article/detail_22765.html
zyc520zyt 2014-10-27
  • 打赏
  • 举报
回复
请问给位大侠,用delphi 7 如何把 1:和2:中xml数据解析成问题中的结果。。。。。。。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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