C# 错误:";要插入的节点来自不同的文档上下文;

C# 错误:";要插入的节点来自不同的文档上下文;,c#,xml,C#,Xml,调用XmlNode.AppendChild()时,出现以下错误: 要插入的节点来自不同的文档上下文 这段代码是从其VB6.0版本转换而来的,该版本是这样的(请忽略可选参数,我在C#version中为它们提供了重载): 为什么VB代码可以工作而C#不能?我需要注意的是,VB和C处理XML的方式是否存在差异?在添加节点之前,需要将节点导入文档: XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI); //necessar

调用
XmlNode.AppendChild()
时,出现以下错误:

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

这段代码是从其VB6.0版本转换而来的,该版本是这样的(请忽略可选参数,我在C#version中为它们提供了重载):


为什么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;

谢谢,先生!ImportNode接受两个参数。。。第二个是深度克隆。。。我如何决定应该将True或False传递给它?@BDotA True(如果要导入节点及其所有子节点);如果您只想导入顶级节点,则为false。@如果
ownerOccument
为null,请调试并找出哪个对象为null
ImportNode(..
应在
oParent
上调用?…是,
oParent.ImportNode(oNode,true);
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
XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);

//necessary for crossing XmlDocument contexts
XmlNode importNode = oParent.OwnerDocument.ImportNode(oNode, true);

oParent.AppendChild(importNode);
return oNode;