以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  [求助]如何将两个xml文件中合并为一个xml文件  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=78495)


--  作者:xml-linguist
--  发布时间:12/9/2009 10:56:00 AM

--  [求助]如何将两个xml文件中合并为一个xml文件
现有两个xml文件,格式如下:

xml01:

...
<item>
<A>1</A>
<B>2</B>
<C>3</C>
<D>4</D>
</item>
...

xml02:

...
<item>
<A>1</A>
<B>2</B>
<E>5</E>
<F>6</F>
</item>
...

通过什么手段将两份文件合并为如下文件:

...
<item>
<A>1</A>
<B>2</B>
<C>3</C>
<D>4</D>
<E>5</E>
<F>6</F>
</item>
...


--  作者:xml-linguist
--  发布时间:12/9/2009 11:28:00 AM

--  

从CSDN.net找到的相关问题

============================================================
现在有两个xml文件:   
  A:   
  <count>   
  <ab>   
  </ab>   
  <list   id=1>   
      <name>aa</name>   
      <sex>女</sex>   
  </list>   
  </count>   
    
  B:   
  <count>   
  <ab>   
  </ab>   
  <list   id=2>   
      <name>bb</name>   
      <sex>男</sex>   
  </list>   
  </count>   
    
  当然实际当中list节点下有很多子节点的   
  我现在想把B文件中的list节点以及它的所有子节点,都复制到a文件中的list   id=1后面   
  结果:   
  <count>   
  <ab>   
  </ab>   
  <list   id=1>   
      <name>aa</name>   
      <sex>女</sex>   
  </list>   
  <list   id=2>   
      <name>bb</name>   
      <sex>男</sex>   
  </list>   
  </count>   
============================================================
相关解答:
string   path1   =   "e:\\text1.xml";   
  XmlDocument   doc1   =   new   XmlDocument();   
  doc1.Load(path1);   
  string   path2   =   "e:\\text2.xml";   
  XmlDocument   doc2   =   new   XmlDocument();   
  doc2.Load(path2);   
  string   outxml   =   doc2.SelectSingleNode("count/list").InnerXml;   
  XmlElement   e   =   doc1.CreateElement("list");   
  e.SetAttribute("id","2");   
  e.InnerXml   =   outxml;   
  doc1.DocumentElement.AppendChild(e);   
  doc1.Save(path1);   
    
  xml文件为   
  text1:   
  <?xml   version="1.0"   encoding="UTF-8"?>   
  <count>   
      <ab>   
      </ab>   
      <list   id="1">   
          <name>aa</name>   
          <sex>woman</sex>   
      </list>   
      <list   id="2">   
          <name>bb</name>   
          <sex>man</sex>   
      </list>   
  </count>   
    
  text2:   
  <?xml   version="1.0"   encoding="UTF-8"?>   
  <count>   
  <ab>   
  </ab>   
  <list   id="2">   
      <name>bb</name>   
      <sex>man</sex>   
  </list>   
  </count>   
    
  测试通过!!!!!!!
============================================================
楼上同一作者的更正:
不好意思   
  text1:   
  <?xml   version="1.0"   encoding="UTF-8"?>   
  <count>   
      <ab>   
      </ab>   
      <list   id="1">   
          <name>aa</name>   
          <sex>woman</sex>   
      </list>   
      <list   id="2">   
          <name>bb</name>   
          <sex>man</sex>   
      </list>   
  </count>   
  这个是结果   
    
  原来的是   
  text1:   
  <?xml   version="1.0"   encoding="UTF-8"?>   
  <count>   
      <ab>   
      </ab>   
      <list   id="1">   
          <name>aa</name>   
          <sex>woman</sex>   
      </list>   
  </count>
============================================================
我的结论:看不懂


--  作者:xml-linguist
--  发布时间:12/9/2009 11:37:00 AM

--  

从CSDN.net找到的第二个相关问题

============================================================
1.   
  <?xml   version="1.0"   encoding="gb2312"?>   
  <书名>学习XML</书名>   
    
  2.   
  <?xml   version="1.0"   encoding="gb2312"?>   
  <作者>忘了</作者>   
    
  合并后:   
  <?xml   version="1.0"   encoding="gb2312"?>   
  <图书信息>   
  <书名>学习XML</书名>   
  <作者>忘了</作者>   
  </图书信息>   

============================================================
相关解答:
uses   
      msxml;   
    
  procedure   TForm2.Button1Click(Sender:   TObject);   
  var   
      XMLDoc1,   XMLDoc2,   XMLDoc:   IXMLDOMDocument;   
      FBook,   FAuthor:   IXMLDOMNode;   
  begin   
      XMLDoc1   :=   CoDOMDocument.Create;   
      XMLDoc2   :=   CoDOMDocument.Create;   
      XMLDoc   :=   CoDOMDocument.Create;   
      try   
          XMLDoc.loadXML(Memo3.Text);   
          XMLDoc1.loadXML(Memo1.Text);   
          XMLDoc2.loadXML(Memo2.Text);   
    
          FBook   :=   XMLDoc1.selectSingleNode('书名');   
          FAuthor   :=   XMLDoc2.selectSingleNode('作者');   
    
          XMLDoc.documentElement.appendChild(FBook);   
          XMLDoc.documentElement.appendChild(FAuthor);   
    
          Memo3.Text   :=   XMLDoc.xml;   
      finally   
          XMLDoc1   :=   nil;   
          XMLDoc2   :=   nil;   
      end;   
  end;
============================================================
更是看不懂


--  作者:Qr
--  发布时间:12/9/2009 1:20:00 PM

--  
一个笨办法:
先把xml01输出到目标文档,然后依次遍历xml02,取各节点与xml01各节点进行比对,重复则跳过,不重复,把该节点添加取目标文档。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms