2008-10-08 4 views
3

J'ai deux XmlDocuments et je voudrais déplacer un XmlNode sélectionné d'un des documents et l'ajouter à un endroit particulier dans l'autre document. L'approche naïvement intuitive de simplement appeler AppendNode (xmlNodeFromDocument1) à l'endroit approprié du document 2, bien sûr ne fonctionne pas parce que la méthode ne prend pas soin de manipuler le document propriétaire. J'ai finalement trouvé la réponse littéralement au moment où j'écrivais cette question, mais comme il nous a fallu si longtemps pour la trouver dans les classes System.Xml, je me suis dit que je la posterais ici pour aider toute personne bloquée à chercher. pour ça.Quelle est la manière intuitive de déplacer un XmlNode d'un XmlDocument à un autre?

Répondre

6

Vous devez appeler ImportNode sur le document cible pour obtenir un noeud compatible avec votre document cible. Le code suivant illustre comment cela est fait 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); 

}