kraemer
Goto Top

Powershell - Zwei XML miteinander verschmelzen

Moin zusammen,

kennt einer von euch eine performante™ Lösung um zwei XML-Dateien per Powershell miteinander zu verschmelzen?

Aufbau Datei 1
<Stamm>
	<Artikel>
		<Artikelnummer>123</Artikelnummer>
		<Name>Test123</Name>
		...
	</Artikel>
</Stamm>

Aufbau Datei 2
<Stamm>
	<Artikel>
		<Artikelnummer>123</Artikelnummer>
		<Preis1>123,45</Preis1>
		<Preis2>423,45</Preis2>
		...
	</Artikel>
</Stamm>

Konkret geht es darum, die Preise, die in der Datei 2 stecken, der Datei 1 hinzuzufügen. Als Schlüssel kann "Artikelnummer" genutzt werden, da einmalig in Datei 1.
Der besondere Hinweis auf performant: Datei 1 enthält ca. 2Mio Zeilen, Datei 2 in etwa 200k Zeilen. Mit zigtausendfachem $xml.CreateElement würde das Stunden dauern.

Jemand eine Idee?

Vielen Dank

Content-ID: 394237

Url: https://administrator.de/contentid/394237

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

137846
137846 30.11.2018 aktualisiert um 09:43:12 Uhr
Goto Top
Nimm doch XSLT dafür damit geht das ratzfatz
Stichworte für Google
Combine two XML with XSLT
Merge two XML with XSLT

Gruß A.
Kraemer
Kraemer 30.11.2018 um 14:22:27 Uhr
Goto Top
Zitat von @137846:
Stichworte für Google
irgendein Stichwort scheint da noch zu fehlen...
137846
137846 30.11.2018 aktualisiert um 14:48:38 Uhr
Goto Top
Wieso, ich find da jede Menge?
Kraemer
Kraemer 30.11.2018 um 14:52:11 Uhr
Goto Top
Zitat von @137846:

Wieso?
naja - lese seit 4 Stunden alles, was ich mit den Suchbegriffen gefunden habe. Das meiste Zeug sind Fragen ohne Antworten, Aneinanderhängungen von XML-Dateien gleichen Inhalts oder irgendwelche Dinge, die als Ergebnis HTML-Code haben.

Das einzige, was ich bisher gefunden habe, was irgendwie ein Ergebnis hervorgerufen hat ist: https://mwallner.net/2017/03/31/merging-xml-with-xslt-and-powershell-ok/ in Kombination mit http://web.archive.org/web/20160502194427/http://www2.informatik.hu-ber ...
das hat zwar die Dateien zusammen gehauen - das Ergebnis ist allerdings Blödsinn (Preise an irgendwelchen Artikeln).
137846
137846 30.11.2018 aktualisiert um 14:58:25 Uhr
Goto Top
Da heute Freitag ist, nimm den Tacker face-smile.
Kraemer
Kraemer 30.11.2018 um 15:04:49 Uhr
Goto Top
Zitat von @137846:

Wieso, ich find da jede Menge?
das ist schön. Ein Link, der zu meiner Aufgabenstellung passt, würde mir schon reichen
Kraemer
Kraemer 30.11.2018 aktualisiert um 15:55:25 Uhr
Goto Top
Mit der spontanen Hilfe eines Bloggers aus Serbien konnte ich das Problem mit XSLT jetzt lösen.
Die von mir geposteten Links sind schon ganz brauchbar. Ich hatte nur zuviel Magic erwartet. Durch das anfügen von
$al.AddParam("node1", "", "Artikelnummer")  
$al.AddParam("node2", "", "Artikelnummer")  
scheint das Ganze wie erwartet zu funktionieren.
Kraemer
Kraemer 04.12.2018 aktualisiert um 10:00:06 Uhr
Goto Top
Update: Die Lösung taugt in meinem Fall nicht die Bohne. Als wenn da ein Zufallsgenerator eingebaut ist.
Wer diese also nutzen will: Testen testen testen