错误:“要插入的节点来自不同的文档上下文”

当我调用XmlNode.AppendChild() ,我得到这个错误:

要插入的节点来自不同的文档上下文。

 static public XmlNode XMLNewChildNode(XmlNode oParent, string sName, string sNamespaceURI, string sNodeType) { XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI); oParent.AppendChild(oNode); return oNode; } 

这个代码是从它的VB 6.0版本转换的(请忽略可选参数,我在C#版本中为它们重载):

 Public Function XMLNewChildNode(ByVal oParent As IXMLDOMNode, ByVal _ sName As String, Optional ByVal sNamespaceURI As String = "", _ Optional ByVal sNodeType As String = "element") As IXMLDOMNode '**************** DESCRIPTION ******************* 'Create a new Child Node for passed Parent. '***************** VARIABLES ******************** Dim oNode As IXMLDOMNode '************************************************ Set oNode = moDoc.createNode(sNodeType, sName, sNamespaceURI) Call oParent.appendChild(oNode) Set XMLNewChildNode = oNode End Function 

为什么VB代码在C#中不工作? VB和C#处理XML有什么区别,我需要知道吗?

在添加节点之前,您需要将节点导入到文档中:

 XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI); //necessary for crossing XmlDocument contexts XmlNode importNode = oParent.OwnerDocument.ImportNode(oNode, true); oParent.AppendChild(importNode); return oNode;