如何将XmlNode从一个XmlDocument复制到另一个?

时间:2010-03-12 18:32:31

标签: xml .net-3.5 .net-4.0

我正在构建一个编写/编辑XML文件的工具,我希望能够使用另一个XML文件中定义的模板片段填充它。

例如,该工具有一个“添加FooBarBaz元素”按钮,可以为正在创建的新文档添加元素,我想通过从模板中复制它来添加FooBarBaz。

或者说这是我的模板文件:

<Templates>
    <FooBarBaz Attribute="Value">
        <ChildElement/>
    </FooBarBaz>
</Templates>

然后我可以使用.GetElementsByTagName(“FooBarBaz”)获取模板片段,并且我希望能够使用类似.AppendChild(templateNode)的内容将其注入新文档。

但问题是XmlNode无法从一个XmlDocument复制到另一个XmlNode,即使你使用.Clone()或.CloneNode(),因为AppendChild()会抛出一个异常,说模板元素属于另一个上下文。

是否有一种简单的方法可以在System.Xml.XmlDocuments之间复制System.Xml.XmlNode?

2 个答案:

答案 0 :(得分:7)

答案 1 :(得分:3)

查看ImportNode方法:

var myNewDoc = new XmlDocument();
myNewDoc.ImportNode(xmlNode, true);