Cuando llamo XmlNode.AppendChild()
, obtengo este error:
El nodo que se va a insertar es de un contexto de documento diferente.
static public XmlNode XMLNewChildNode(XmlNode oParent, string sName,
string sNamespaceURI, string sNodeType)
{
XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);
oParent.AppendChild(oNode);
return oNode;
}
Este código se convirtió de su versión VB 6.0, que era esta (ignore los parámetros opcionales, tengo sobrecargas en la versión 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
¿Por qué funciona el código VB mientras que el C # no? ¿Existen diferencias entre la forma en que VB y C # manejan XML, que debo tener en cuenta?
OwnerDoccument
es nulo;ImportNode(..
debe ser llamadooParent
?oParent.ImportNode(oNode, true);