📅  最后修改于: 2023-12-03 15:35:13.835000             🧑  作者: Mango
当使用 C# 代码中的 System.Private.Xml.dll 进行 XML 操作时,可能会遇到以下异常:
System.ArgumentException: 要插入的节点来自不同的文档上下文
该异常通常发生在以下情况下:
为了避免此异常,您可以采取以下措施:
在将一个 XML 节点复制到另一个文档时,必须首先将该节点从源文档分离出来。然后,您可以在目标文档中插入该节点。如下所示:
XmlNode myNode = sourceDocument.SelectSingleNode("//myNode");
XmlNode importedNode = destinationDocument.ImportNode(myNode, true);
destinationDocument.DocumentElement.AppendChild(importedNode);
在此代码片段中,我首先选择了我的源文档中的一个节点。然后,我使用 ImportNode()
方法将该节点从源文档中分离出来,并将其添加到目标文档中。最后,我将目标文档中的节点附加到文档元素中。
如果您需要在多个 XmlDocument 对象之间移动节点,请使用 XDocument
或 XmlDocument
类型的对象。在这些类型的对象中,节点可以属于不同的文档上下文,因此您不必在移动节点之前将其分离出来。
如果您遇到此异常,也可以考虑重新设计您的 XML 数据。您可以尝试创建一个 XML 文档,使其包含所有必要的数据。然后,您可以在需要时将该文档作为整体复制到其他文档中。
在 C# 中使用 System.Private.Xml.dll 进行 XML 操作时,如果要将节点从一个文档移到另一个文档中,请确保在插入节点之前将其分离出来,并始终检查该节点是否属于正确的文档上下文。此外,如果可能的话,使用 XDocument 或 XmlDocument 类型的对象进行操作,以便节点可以在它们之间移动而无需分离。