Qual é uma maneira intuitiva de mover um XMLNode de um XMLDocument para outro?

StackOverflow https://stackoverflow.com/questions/184486

  •  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.

Foi útil?

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);

}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top