write read leer example ejemplo documentelement create crear c# xml

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;