我遇到使用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>
答案 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”