将 XmlNode 从一个 XmlDocument 移动到另一个 XmlDocument 的直观方法是什么?

发布于 2024-07-06 13:08:10 字数 245 浏览 6 评论 0原文

我有两个 XmlDocuments,我想移动从其中一个文档中选择的 XmlNode,并将其附加到另一个文档中的特定位置。

在文档 2 的适当位置简单地调用 AppendNode(xmlNodeFromDocument1) 的简单直观方法当然行不通,因为该方法不负责操作所属文档。

当我写这个问题时,我终于找到了字面上的答案,但由于我们花了很长时间才在 System.Xml 类中找到它,所以我想我会将其发布在这里以帮助其他人继续寻找它。

I have two XmlDocuments and I would like to move an XmlNode selected from one of the documents and append it at a particular location in the other document.

The naively intuitive approach of simply calling AppendNode(xmlNodeFromDocument1) at the appropriate place of document 2, of course doesn't work because the method does not take care of manipulating the owning document.

I finally found the answer literally as I was writing up this question, but since it took so long for us to find it in the System.Xml classes, I figured I'd post it here to assist anyone else stuck searching for it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梅倚清风 2024-07-13 13:08:10

您需要在目标文档上调用 ImportNode 来获取与目标文档兼容的节点。 以下代码说明了如何在 C# 中完成此操作。

public void CopyExample()
{

   XmlNode nodeFromDifferentDocument = SelectNodeFromSourceDocument();
   XmlDocument targetDocument = InitializeTargetDocument();
   XmlNode targetParentNode = SelectNodesParentWithinTargetDocument(targetDocument);
   bool shouldDodeepCopy = DoIWantADeepCopy();

   XmlNode copyThatBelongsToTargetDocument = 
      targetDocument.ImportNode(nodeFromDifferentDocument, shouldDoDeepCopy);
   targetParentNode.AppendChild(copyThatBelongsToTargetDocument);

}

You need to call ImportNode on the target document to get a node compatible with your target document. The following code illustrates how it is done in C#.

public void CopyExample()
{

   XmlNode nodeFromDifferentDocument = SelectNodeFromSourceDocument();
   XmlDocument targetDocument = InitializeTargetDocument();
   XmlNode targetParentNode = SelectNodesParentWithinTargetDocument(targetDocument);
   bool shouldDodeepCopy = DoIWantADeepCopy();

   XmlNode copyThatBelongsToTargetDocument = 
      targetDocument.ImportNode(nodeFromDifferentDocument, shouldDoDeepCopy);
   targetParentNode.AppendChild(copyThatBelongsToTargetDocument);

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文