2009-03-11 33 views

Respuesta

13

Un XmlDocument es básicamente un XmlNode, por lo que puede añadir al igual que lo haría para cualquier otra XmlNode. Sin embargo, la diferencia surge del hecho de que esteXmlNode no pertenece al documento de destino, por lo tanto, deberá utilizar el método ImportNode y luego realizar el apéndice.

// xImportDoc is the XmlDocument to be imported. 
// xTargetNode is the XmlNode into which the import is to be done. 

XmlNode xChildNode = xSrcNode.ImportNode(xImportDoc, true); 
xTargetNode.AppendChild(xChildNode); 
+2

ah sí, pero ¿qué es xSrcNode? ¿Por qué aparece el mensaje de error? No se pueden importar nodos de tipo 'Documento'. ¿Qué tipo es xTargetNode? – fijiaaron

+2

@fijiaaron Debe seleccionar el elemento raíz del documento: 'XmlNode xChildNode = xSrcNode.ImportNode (xImportDoc.DocumentElement, true);' – nmat

+0

Si su XmlDoc está actualmente escrito como un XmlNode, o si está tratando de importar un XmlNode, en su lugar puede hacer 'XmlNode xChildNode = xSrcNode.ImportNode (xImportDoc.OwnerDocument.DocumentElement, true);' –

1

Tal como esto:

XmlNode node = ...... // belongs to targetDoc (XmlDocument) 

node.AppendChild(targetDoc.ImportNode(xmlDoc.DocumentElement)); 

Marc

+0

yo sepa, se le requiere a la importación ** * un nodo si no pertenece a la corriente antes de XmlDocument puedes agregarlo Ver mi respuesta – Cerebrus

+0

Sí, parece que necesita llamar a ImportNode de hecho, pero que * creará * una copia del documento Xml ..... –

5

Sí:

XmlNode imported = targetNode.OwnerDocument.ImportNode(otherDocument.DocumentElement, true); 
targetNode.AppendChild(imported); 

Creo que esto crea un clon de su documento sin embargo.

0

Una vez que tenga el nodo raíz del documento XML en cuestión, puede agregarlo como un nodo secundario del nodo en cuestión. ¿Tiene sentido?

1

Digamos que usted tiene la construcción siguiente:

La siguiente estructura se almacena en un XmlElement llamado XmlElement:

</root> 

y la siguiente estructura se almacena en un FooNode objeto XmlNode llamado ;

<foo> 
    <bar>This is a test</bar> 
    <baz>And this is another test</baz> 
</foo> 

Luego de hacer lo siguiente:

XmlNode node = doc.ImportNode(FooNode.SelectSingleNode("foo"), true); 
xmlElement.AppendChild(node); 

espero que ayude a alguien

Cuestiones relacionadas