Pregunta

Tengo dos XmlDocuments y me gustaría mover un XmlNode seleccionado de uno de los documentos y agregarlo a una ubicación particular en el otro documento.

El enfoque ingenuamente intuitivo de simplemente llamar a AppendNode (xmlNodeFromDocument1) en el lugar apropiado del documento 2, por supuesto, no funciona porque el método no se encarga de manipular el documento propietario.

Finalmente encontré la respuesta literalmente mientras escribía esta pregunta, pero como nos tomó tanto tiempo encontrarla en las clases System.Xml, pensé que la publicaría aquí para ayudar a cualquier otra persona atascada en la búsqueda.

¿Fue útil?

Solución

Debe llamar a ImportNode en el documento de destino para obtener un nodo compatible con su documento de destino. El siguiente código ilustra cómo se hace en C #.

public void CopyExample()
{

   XmlNode nodeFromDifferentDocument = SelectNodeFromSourceDocument();
   XmlDocument targetDocument = InitializeTargetDocument();
   XmlNode targetParentNode = SelectNodesParentWithinTargetDocument(targetDocument);
   bool shouldDodeepCopy = DoIWantADeepCopy();

   XmlNode copyThatBelongsToTargetDocument = 
      targetDocument.ImportNode(nodeFromDifferentDocument, shouldDoDeepCopy);
   targetParentNode.AppendChild(copyThatBelongsToTargetDocument);

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top