急:请问各位高手,如何生成下面格式的XML文件,又如何将这个文件的内容解析出来,分不够再加。谢谢了
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 rel. 3 (http://www.altova.com) by leandro (EMBRACE) -->
<QQ101 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="QQ101.xsd" id="101">
<MsgHead>
<MsgName>QQ101_ABC_CCM_200710101212120001.xml</MsgName>
<SendDateTime>2007-06-01T13:36:00</SendDateTime>
<MsgType>QQ101</MsgType>
</MsgHead>
<MsgBody>
<FormId>123456789012345678</FormId>
<VoyageNo>1234567890123456</VoyageNo>
<BillNo>12345678</BillNo>
<ExamMode>0</ExamMode>
<SendTime>2007-09-10T13:36:00</SendTime>
<AgentCode>1234567890</AgentCode>
<AgentName>华西村</AgentName>
<DeclareNo>123456</DeclareNo>
<NoticeDep村长</NoticeDep>
<Contas count="3">
<Conta>
<ContaNo>12345678900</ContaNo>
<ExamAddr>53000101001</ExamAddr>
</Conta>
<Conta>
<ContaNo>12345678901</ContaNo>
<ExamAddr>53000101002</ExamAddr>
</Conta>
<Conta>
<ContaNo>12345678902</ContaNo>
<ExamAddr>53000101003</ExamAddr>
</Conta>
</Contas>
</MsgBody>
<QQ101>

解决方案 »

  1.   

    对了,使用的控件为TXMLDocument
      

  2.   

    大概就是这样uses XMLDoc, XMLIntf;var
      Xml: TXMLDocument;
      TempXNode,TempXNode1,Node: IXmlNode;
      IntI:Integer;
      h:Head;
    begin
      Xml:= TXMLDocument.Create( AOwner );
      try
        Xml:= TXMLDocument.Create( AOwner );
        Xml.LoadFromFile( 'D:\123.xml',xetUTF_8 );
      end;
      Xml.Active:= True;
      try
        TempXNode := Xml.DocumentElement;
        Node:= TempXNode.ChildNodes.FindNode( 'MsgHead ' );
        showmessage( Node.ChildNodes.FindNode( 'MsgName' ).NodeValue );
        showmessage( Node.ChildNodes.FindNode( 'SendDateTime' ).NodeValue );
        showmessage( Node.ChildNodes.FindNode( 'MsgType' ).NodeValue );
        Node:= TempXNode.ChildNodes.FindNode( 'MsgBody' );
        if Node <> nil then
        begin
          showmessage( Node.ChildNodes.FindNode( 'FormId' ).NodeValue );
          showmessage( Node.ChildNodes.FindNode( 'VoyageNo' ).NodeValue );
          ...
        end;
        Node:= TempXNode.ChildNodes.FindNode( '...' );
      finally
      end;
    end;
      

  3.   

    可以使用Delphi自带的XML Data  Binging功能,会针对这个XML文件创建一系列接口和方法,之后就可以使用面向对象技术访问XML文档内容了。
      

  4.   

    if Node <> nil then
        begin
             end;反复用,一层层进入
      

  5.   

    总体上xml的结构可以理解为一个树林,每个树循环递归求各节点,然后循环每个树。这个是自己手工去做的。还有很多现成的类可以用,但是本质上都是树的应用的扩展。个人理解,欢迎指正。
      

  6.   

    添加的话,也是仿照 失踪的月亮 的方法, AddNode 或者 AddChild