[參考]简析Delphi中的XML编程 
http://www3.ccw.com.cn/club/bbs/showEssence.asp?id=11786

解决方案 »

  1.   

    试下下面行不行:ParenXMLDocument,OtherXMLDocument:TXMLDocument;
    Node,ChildNode:IXMLNode;    xmlFlowData.Active:=true;
        xmlFlowData.ChildNodes.Clear;
        xmlFlowData.Version:='1.0';
        xmlFlowData.Encoding:='GB2312';
        node:=xmlFlowData.AddChild('父');
        if (OtherXMLDocument.Active) and (OtherXMLDocument.ChildNodes.Count>0) then
        begin
          ChildNode := OtherXMLDocument.DocumentElement; //注意这里
          node.ChildNodes.Add(ChildNode);
        end;
        
      

  2.   

    欢迎加入Borland DELPHI程序员,参与群里技术讨论!欢迎女孩子,也欢迎男孩子参与技术讨论!群号15154361
      

  3.   

    自己摸索了一下,问题解决.
    //在指定的结点上添加指定Xml文件的所有结点
    Function AddXmlFileToNode(FatherNode :IXMLNode;ChildXmlStr :string;HasFather:Boolean = False):boolean;
      procedure CopyStrToStream(Str :string;Stream :TMemoryStream);
      var
        s :string;
      begin
            try
                s := trim(Str);
                Stream.Clear;
                Stream.Position := 0;
                Stream.Write(s[1],Length(s));
                Stream.Position := 0;
            finally        end;
      end;
    var
        ChildXml: IXMLDocument;
        XmlStream :TMemoryStream;
        i :integer;
        ret :boolean;
    begin
        try
            ret := False;
            XmlStream := nil;
            try
                if Trim(ChildXmlStr) = '' then
                  begin
                    ret := true;
                    exit;
                  end;
                XmlStream := TMemoryStream.Create;
                CopyStrToStream(ChildXmlStr,XmlStream);
                ChildXml := TXMLDocument.Create(nil);
                ChildXml.LoadFromStream(XmlStream);
                ChildXml.Active := True;
                if HasFather then
                  begin
                    FatherNode.DOMNode.appendChild(ChildXml.DocumentElement.DOMNode.cloneNode(true));
                  end
                else
                  begin
                    for i:=0 to ChildXml.ChildNodes.Count -1 do
                      begin
                        FatherNode.DOMNode.appendChild(ChildXml.ChildNodes[i].DOMNode.cloneNode(true));
                      end;
                  end;
                ret := True;
            except        end;
        finally
            if XmlStream <> nil then
              begin
                xmlstream.Clear;
                XmlStream.Free;
              end;
            ChildXml.Active := False;
            result := ret;
        end;
    end;