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

Posted

技术标签:

【中文标题】如何将 XmlNode 从一个 XmlDocument 复制到另一个?【英文标题】:How can I copy an XmlNode from one XmlDocument to another? 【发布时间】:2011-01-26 22:54:24 【问题描述】:

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

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

或者假设这是我的模板文件:

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

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

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

有没有一种简单的方法可以在 System.Xml.XmlDocument 之间复制 System.Xml.XmlNode?​​p>

【问题讨论】:

【参考方案1】:

看看XmlDocument.ImportNode。

【讨论】:

【参考方案2】:

查看ImportNode 方法:

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

【讨论】:

以上是关于如何将 XmlNode 从一个 XmlDocument 复制到另一个?的主要内容,如果未能解决你的问题,请参考以下文章

如何从python中的xmlNode获取xpathContext

如何从 XmlNode 实例中获取 xpath

将 XElement 转换为 XmlNode

C#如何在xmlnode中存储网站列表

C#将多个XMLNode或XMLNodeList从一个XMLDocument复制到另一个XMLDocument

将 XmlNode 添加到 XmlElement