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-Key: 394237

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

Printed on: April 18, 2024 at 04:04 o'clock

Mitglied: 137846
137846 Nov 30, 2018 updated at 08:43:12 (UTC)
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.
Member: Kraemer
Kraemer Nov 30, 2018 at 13:22:27 (UTC)
Goto Top
Zitat von @137846:
Stichworte für Google
irgendein Stichwort scheint da noch zu fehlen...
Mitglied: 137846
137846 Nov 30, 2018 updated at 13:48:38 (UTC)
Goto Top
Wieso, ich find da jede Menge?
Member: Kraemer
Kraemer Nov 30, 2018 at 13:52:11 (UTC)
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).
Mitglied: 137846
137846 Nov 30, 2018 updated at 13:58:25 (UTC)
Goto Top
Da heute Freitag ist, nimm den Tacker face-smile.
Member: Kraemer
Kraemer Nov 30, 2018 at 14:04:49 (UTC)
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
Member: Kraemer
Kraemer Nov 30, 2018 updated at 14:55:25 (UTC)
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.
Member: Kraemer
Kraemer Dec 04, 2018 updated at 09:00:06 (UTC)
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