C#XML合并(2个以上文件)

时间:2010-09-29 06:49:25

标签: c# xml

我遇到使用c#将2个或更多xml文件合并为1的问题。

我正在使用DataSet:

//ds1,ds2,ds3 are DataSets
private void MyMethod()
{
    ds1.ReadXml(tmpStream);
    ds2.ReadXml(tmpStream);    
    ds1.Merge(ds2);
}

但我不想使用DataSet。我正在寻找另一种方式。

第一个XML

<?xml version="1.0" encoding="utf-8"?>
<catalog>
  <item>
    <path>'filePath'</path>
    <deleted>0</deleted>
    <date>9/23/2010 11:30:03 AM</date>
  </item> 
</catalog>

第二个是

<?xml version="1.0" encoding="utf-8"?>
<catalog>
  <item>
    <path>'filePath'</path>
    <deleted>0</deleted>
    <date>9/23/2010 11:30:03 AM</date>
  </item> 
</catalog>

结果必须是

<?xml version="1.0" encoding="utf-8"?>
    <catalog>
      <item>
        <path>'filePath'</path>
        <deleted>0</deleted>
        <date>9/23/2010 11:30:03 AM</date>
      </item> 
      <item>
        <path>'filePath'</path>
        <deleted>0</deleted>
        <date>9/23/2010 11:30:03 AM</date>
      </item> 
    </catalog>

2 个答案:

答案 0 :(得分:5)

虽然现在还不清楚你想要什么样的合并,但本文Merging XML Files, Schema Validation, and More可能会帮助你理解。

最简单的可能是,如果你不想进行任何检查(重复,僵尸等)

var ResultXml = XDocument.Load("file1.xml");
ResultXml.Root.Add(XDocument.Load("file2.xml").Root.Elements());

答案 1 :(得分:3)

要将XML文件合并到结果文件中,您可以使用Microsoft的XML Diff and Patch C#API。您可以在Eric White's blog帖子中阅读更多相关信息:“OpenXmlDiff.Exe: A Utility to Find the Differences Between Two Open XML Documents