read - write xml c#
Error: "El nodo que se va a insertar pertenece a un contexto de documento diferente" (1)
Cuando estoy llamando a XmlNode.AppendChild()
, XmlNode.AppendChild()
este error:
El nodo que se 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 esto (ignore los parámetros opcionales, tengo sobrecargas para ellos 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? ¿Hay diferencias entre la forma en que VB y C # manejan XML, que debo tener en cuenta?
Debe importar el nodo en el documento antes de agregarlo:
XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);
//necessary for crossing XmlDocument contexts
XmlNode importNode = oParent.OwnerDocument.ImportNode(oNode, true);
oParent.AppendChild(importNode);
return oNode;