Delphi TXMLDocument 解析,返回

收到报文

<?xml version="1.0" encoding="UTF-8"?>

<A>
<B>111111</B>
<C>2015-11-10</C>
<D Type=””>
<E>S00001</E>
<E>S00002</E>
</D>
<F>A111111</F>
<G>
<H>EXCLE</H>
<H>DBF</H>
</G>
<J>back</J>
<K>C:\</K>
<L>YYYYMMDD</L>
</A>



  GZBXml := TXMLDocument.Create(Application);
  try
    try
      GZBXml.Active := False;
      GZBXml.XML.Add(AParams);
      GZBXml.Active := True;
      GZBXml.Version:='1.0';
      GZBXml.Encoding := 'UTF-8';


      XMLNode1 := nil;
      XMLNode1 := GZBXml.ChildNodes.FindNode('A');
      if XMLNode1 = nil then
        raise Exception.Create('A,XML格式错误');


      for I := 0 to XMLNode1.ChildNodes.Count - 1 do
      begin
        if UpperCase('B') = UpperCase(XMLNode1.ChildNodes[I].NodeName) then
          B :=Trim(XMLNode1.ChildNodes[I].Text);
        if UpperCase('C') = UpperCase(XMLNode1.ChildNodes[I].NodeName) then
          C :=Trim(XMLNode1.ChildNodes[I].Text);
        if UpperCase('D') = UpperCase(XMLNode1.ChildNodes[I].NodeName) then
        begin
          D := EmptyStr;
          for J := 0 to XMLNode1.ChildNodes[I].AttributeNodes.Count - 1 do
          begin
            if UpperCase('Type') = UpperCase(XMLNode1.ChildNodes[I].AttributeNodes[J].NodeName) then
              D := Trim(XMLNode1.ChildNodes[I].AttributeNodes[J].Text);
          end;
          if D = EmptyStr then
          begin
            XMLNode2 := nil;
            XMLNode2 := XMLNode1.ChildNodes.FindNode('E');
            if XMLNode2 = nil then
              raise Exception.Create('无法找到E节点,XML格式错误');
            E := EmptyStr;
            for J := 0 to XMLNode2.ChildNodes.Count - 1 do
            begin
              if E = EmptyStr then
                E := Trim(XMLNode2.ChildNodes[J].Text)
              else
                E := E + ',' + Trim(XMLNode2.ChildNodes[J].Text);
            end;
          end;
        end;
        if UpperCase('F') = UpperCase(XMLNode1.ChildNodes[I].NodeName) then
          F :=Trim(XMLNode1.ChildNodes[I].Text);
        XMLNode2 := nil;
        XMLNode2 := XMLNode1.ChildNodes.FindNode('G');
        if XMLNode2 = nil then
          raise Exception.Create('无法找到AssetCode节点,XML格式错误');
        G := EmptyStr;
        for J := 0 to XMLNode2.ChildNodes.Count - 1 do
        begin
          if G = EmptyStr then
            G := Trim(XMLNode2.ChildNodes[J].Text)
          else
            G := G + ',' + Trim(XMLNode2.ChildNodes[J].Text);
        end;
        if UpperCase('K') = UpperCase(XMLNode1.ChildNodes[I].NodeName) then
          K :=Trim(XMLNode1.ChildNodes[I].Text);
        if UpperCase('L') = UpperCase(XMLNode1.ChildNodes[I].NodeName) then
          L :=Trim(XMLNode1.ChildNodes[I].Text);
      end;

返回报文
<?xml version="1.0" encoding="UTF-8"?>
<A>
<B>111111</B>
<C>2015-11-10</C>
<D>A001</D>
<E>
<F F1=”F00001” F2=”F1000”/>
<F F1=”F00002” F2=”F0000”/>
</E>
</A>


GZBXml.Active := False;
GZBXml.XML.Clear;
GZBXml.Active := True;
GZBXml.Version:='1.0';
GZBXml.Encoding := 'UTF-8';
XMLNode1 := GZBXml.AddChild('A');
XMLNode2 := XMLNode1.AddChild('B');
XMLNode2.Text := 111111;
XMLNode2 := XMLNode1.AddChild('C');
XMLNode2.Text := '2015-11-10';
XMLNode2 := XMLNode1.AddChild('D');
XMLNode2.Text := 'A001';
XMLNode2 := XMLNode1.AddChild('E');
XMLNode3 := XMLNode2.AddChild('F');
XMLNode3.SetAttribute('F1', 'F00001');
XMLNode3.SetAttribute('F2', 'F1000');
XMLNode3.SetAttribute('F1', 'F00002');
XMLNode3.SetAttribute('F2', 'F0000');
Result := GZBXml.XML.Text;
    except
      ErrorStr := Exception(ExceptObject).Message;
    end;
  finally
    GZBXml.Active := False;
    FreeAndNil(GZBXml);
  end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值