2009-03-26 14 views
1

Ich versuche nur 2 XML-Dokumente zusammenführen (Hinzufügen von Knoten von einem in den anderen). Ich habe einige Google-Suche gemacht, und habe ein paar Dinge ausprobiert, aber ich bekomme immer den gleichen Fehler "Der einzufügende Knoten stammt aus einem anderen Dokumentkontext."VB.NET Einfügen von XML-Knoten in ein vorhandenes XML-Dokument

Ich bin mir sicher, ich vermisse etwas Einfaches, nur scheint nicht so schwierig zu sein.

Hier ist mein Code:

Dim xmlDoc482 As XmlDocument = New XmlDocument 
    Dim xmlDoc486 As XmlDocument = New XmlDocument 
    Dim xmlDoc490 As XmlDocument = New XmlDocument 

    xmlDoc482.LoadXml(strSettlement482) 
    xmlDoc486.LoadXml(strSettlement486) 
    xmlDoc490.LoadXml(strSettlement490) 

    Dim xmlSummarysNode490 As XmlNode = xmlDoc486("Summarys") 
    Dim xmlSummaryNode482 As XmlNode = xmlDoc482("Summarys").LastChild 
    Dim xmlSummaryNode486 As XmlNode = xmlDoc486("Summarys").LastChild 

    Dim nodeDest As XmlNode 
    nodeDest = xmlDoc490.ImportNode(xmlSummaryNode482, True) 
    xmlSummarysNode490.AppendChild(nodeDest) 

    nodeDest = xmlDoc490.ImportNode(xmlSummaryNode486, True) 
    xmlSummarysNode490.AppendChild(nodeDest) 
+1

FWIW in diesem späten Stadium, der Plural der Zusammenfassung ist Zusammenfassungen. –

Antwort

0

Dies funktioniert gut, andere dann meinen dummen, dummen Tippfehler

Diese:

Dim xmlSummarysNode490 As XmlNode = xmlDoc486("Summarys") 

Diese werden soll:

Dim xmlSummarysNode490 As XmlNode = xmlDoc490("Summarys") 

Ein Element/Knoten muss mit dem Dokument hinzugefügt werden, zu dem Sie es hinzufügen.

2

Versuchen Sie, die importierten Knoten zum Document anstelle der Linie Dim xmlSummarysNode490 Wie XmlNode = xmlDoc486 ("Zusammenfassungen") angehängt wird.

xmlDoc490.DocumentElement.AppendChild(nodeDest) 

Sie könnten auch versuchen CloneNode mit() statt ImportNode() vor dem Einsetzen.

Schließlich war etwas, das mir in der Vergangenheit bei der Zusammenführung geholfen hat, ein einfaches Container-XML zu erstellen und dann die Kinderdokumente alle darin zu speichern.

xmlMerged.LoadXML("<set></set>") 

So wird es:

<set> 
<Summary>....</Summary> 
<Summary>....</Summary> 
... 
</set> 
2

Sie könnten eine Hilfsfunktion (oder noch besser, eine Erweiterungsmethode) erstellen eine Kopie des XML-Knoten zu schaffen, sondern ändert das zugehörige Dokument des Knotens auf das Dokument Sie möchten in zusammenführen. Sie könnten auch versuchen, mithilfe von Reflektion, aber das bekommt Art chaotisch ...

1

Hier ist eine einfache Möglichkeit, 2 xmls mit demselben Schema zu fusionieren:

Dim x1 As New Dataset 
x1.ReadXml(path1) 
Dim x2 As New Dataset 
x2.ReadXml(path2) 

x1.Merge(x2) 
x1.WriteXml(path3) 

Sie können sich wahrscheinlich es um Ihre eigene Situation anzupassen.

Verwandte Themen