如何合并来自不同DomDocuments的XML

时间:2020-03-05 18:51:48  来源:igfitidea点击:

从两个不同的DOM文档合并XML的最简单方法是什么?除了使用Canonical DataReader方法然后将输出的DOM弄乱之外,还有其他方法吗?我基本上想要的是将AppendChild添加到XmlElements,而不会得到:要插入的节点来自不同的文档上下文。这是我要工作的Ccode,显然不会(我正在做的是合并两个文档,有一些我对以下部分感兴趣的节点:

XmlDocument doc1 = new XmlDocument();
doc1.LoadXml("<a><items><item1/><item2/><item3/></items></a>");
XmlDocument doc2 = new XmlDocument();
doc2.LoadXml("<b><items><item4/><item5/><item6/></items></b>");

XmlNode doc2Node = doc2.SelectSingleNode("/b/items");

XmlNodeList doc1Nodes = doc1.SelectNodes("/a/items/*");

foreach (XmlNode doc1Node in doc1Nodes)
{
    doc2Node.AppendChild(doc1Node);
}

解决方案

回答

我们可以使用XmlDocument.ImportNode方法将节点从XmlDocument复制到另一个节点。

回答

我们可能对http://msdn.microsoft.com/zh-cn/library/system.xml.xmldocument.importnode.aspx感兴趣。但是请仔细阅读该文档的"下表描述了每个XmlNodeType的特定行为"。