Qual é uma maneira intuitiva de mover um XMLNode de um XMLDocument para outro?
-
06-07-2019 - |
Pergunta
Eu tenho dois XMLDocuments e gostaria de mover um XMLNode selecionado em um dos documentos e anexá -lo em um local específico no outro documento.
A abordagem ingênua intuitiva de simplesmente chamar Apêndnode (xmlNodeFromDocument1) no local apropriado do documento 2, é claro, não funciona porque o método não cuida de manipular o documento próprio.
Finalmente encontrei a resposta literalmente enquanto estava escrevendo essa pergunta, mas como demorou tanto tempo para encontrá -la nas aulas do System.xml, imaginei que a publicaria aqui para ajudar qualquer outra pessoa que procurasse por isso.
Solução
Você precisa ligar ImportNode
no documento de destino para obter um nó compatível com seu documento de destino. O código a seguir ilustra como é feito em 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);
}