¿Cuál es una forma intuitiva de mover un XmlNode de un XmlDocument a otro?
-
06-07-2019 - |
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.
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);
}