Ursprüngliche Frage: Ich habe 1000 XMLs mit einer ähnlichen Struktur und ich möchte sie zu einem Master-XML mit den Elementen zusammenführen, die ich übersetzen muss. Sobald ich diesen Master-XML-Code übersetzt habe, möchte ich die Änderungen an die einzelnen XML-Dateien weitergeben. Am Ende werde ich die 1000 XML-Dateien übersetzen lassen.Mischen Sie mehrere XMLs und propagieren Änderungen
Ich bin klar, wie die XMLs mit XSL zusammenführen, aber der Teil, um die Änderungen zurück zu übertragen, es ist, was ich mit kämpfen.
Könnten Sie irgendeine Anleitung geben, wie würden Sie es tun?
Edit2:
Also das, was ich habe, so weit:
die XMLs Merging
Beachten Sie, dass der XMLs völlig verschieden sein kann, muss dies im Hinblick auf die flexibel sein XML-Struktur
Dim XML1 = XElement.Load("D:\xml1.txt")
Dim XML2 = XElement.Load("D:\xml2.txt")
//datasetXMLv2 contains a table Entry with 4 columns: number, Order, File, ContentXML)
//contentXML column is set as an object, all other columns are strings
DatasetXMLv2.Tables("Entry").Rows.Add(New Object() {"1", "order1", "file1", XML1})
DatasetXMLv2.Tables("Entry").Rows.Add(New Object() {"2", "order2", "file2", XML2})
DatasetXMLv2.Tables("Entry").WriteXml("d:\merge.xml")
XML1:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item type="product">
<key>Key1</key>
<field><![CDATA[product name]]></field>
<comment></comment>
</item>
XML2:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<item type="product">
<key>Key2</key>
<field><![CDATA[product name2]]></field>
<desc><![CDATA[description2]]></desc>
<comment></comment>
<img>http://myimage</img>
</item>
Merge.xml
<?xml version="1.0" standalone="yes"?>
<MergeXMLv2>
<Entry>
<Number>1</Number>
<Order>order1</Order>
<File>file1</File>
<XMLContent msdata:InstanceType="System.Xml.Linq.XElement, System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<item type="product">
<key>Key1</key>
<field><![CDATA[product name]]></field>
<comment>
</comment>
</item>
</XMLContent>
</Entry>
<Entry>
<Number>2</Number>
<Order>order2</Order>
<File>file2</File>
<XMLContent msdata:InstanceType="System.Xml.Linq.XElement, System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<item type="product">
<key>Key2</key>
<field><![CDATA[product name2]]></field>
<desc><![CDATA[description2]]></desc>
<comment>
</comment>
<img>http://myimage</img>
</item>
</XMLContent>
</Entry>
<MergeXMLv2>
Ergebnis von Merging ist zufriedenstellend, wie ich jedes XML zugeordnet habe (in diesem Beispiel habe ich file1 und file2 verwendet, aber es würde die tatsächlichen xml1 und xml2 Pfade haben), um den Inhalt in extrahiert der XMLcontent-Knoten.
die XMLs Propagierung
Dies ist der Teil, wo ich bin mit kämpfen. Mein Code ist so weit wie folgt:
Dim mergeXML As XmlDocument
Dim nodelist As XmlNodeList
Dim node As XmlNode
mergeXML = New XmlDocument
mergeXML.Load("D:\merge.xml")
nodelist = mergeXML.SelectNodes("//Entry")
For Each node In nodelist
Dim nodeNumer = node.ChildNodes(0).InnerText
Dim nodeOrder = node.ChildNodes(1).InnerText
Dim nodeFile = node.ChildNodes(2).InnerText
Dim nodeXMLcontent = node.ChildNodes(3).InnerText
Next
ich das Teil bin fehlt einfach den Inhalt des XMLcontent Knoten auf einem separaten XML zu extrahieren unter Verwendung der Anzahl, Reihenfolge, Datei Knoten die Originaldateien xml1.txt ersetzen und xml2.txt.
Jede Hilfe würde sehr geschätzt werden.
Danke!
auf die Veränderungen Je Sie an den Master XML machen dies nahezu unmöglich sein kann - (a), warum nicht jeder der Transformation XMLs einzeln? (b) Wenn Sie die Ausgabe des modifizierten Master-XML gut formatiert halten, könnten Sie sie einfach an den Stellen aufteilen, an denen Sie wissen, dass zwei Dateien übereinstimmen? –
Allgemein verwendbare Sprachen wie Vb.Net können den Master-XML-Code aufteilen, indem XSLT-Skript oder String dynamisch geändert werden, um nach benötigten Abschnitten zu filtern und dann die Ausgabe iterativ in Datei zu speichern. – Parfait