2008-09-11 7 views
2

Quel est le moyen le plus simple de fusionner XML à partir de deux documents DOM distincts? Y a-t-il un moyen autre que d'utiliser l'approche Canonical DataReader et de jouer avec le DOM sorti. Ce que je veux essentiellement, c'est AppendChild à XmlElements sans avoir: The node to be inserted is from a different document context. Voici le code C# que je veux travailler, ce qui ne va évidemment pas (ce que je fais fusionne deux documents qui ont des tas de nœuds qui m'intéressent) :Comment fusionner XML à partir de différents DomDocuments

XmlDocument doc1 = new XmlDocument(); 
doc1.LoadXml("<a><items><item1/><item2/><item3/></items></a>"); 
XmlDocument doc2 = new XmlDocument(); 
doc2.LoadXml("<b><items><item4/><item5/><item6/></items></b>"); 

XmlNode doc2Node = doc2.SelectSingleNode("/b/items"); 

XmlNodeList doc1Nodes = doc1.SelectNodes("https://stackoverflow.com/a/items/*"); 

foreach (XmlNode doc1Node in doc1Nodes) 
{ 
    doc2Node.AppendChild(doc1Node); 
} 

Répondre

5

Vous pouvez utiliser la méthode XmlDocument.ImportNode pour copier un nœud d'un XmlDocument à un autre.

+1

http://php.net/domdocument.importnode – matpie

+0

Notez que lorsque vous .ImportNode() vous obtenez un nouveau noeud. Utilisez celui-là - l'ancien jettera toujours une exception! – ANeves