Powershell XML umwandeln
Hallo,
bisher habe ich mich mehr oder weniger erfolgreich durch sämtliche xml Foren gelesen komme aber jetzt leider an einen Punkt an dem es seit mehreren Wochen nicht weiter geht. Ich möchte zum Teil sehr große XML Dateien in entweder csv oder txt umwandel, ich habe dazu das nachfolgende Script geschrieben welches mir auch jeden Knoten in eine Zeile schreibt, was allerdings fehlt und wo ich nun nicht weiter kommen: Ich hätte gerne nach jeden Tag einen Trenner Semikolon oder Komma.
bisher habe ich mich mehr oder weniger erfolgreich durch sämtliche xml Foren gelesen komme aber jetzt leider an einen Punkt an dem es seit mehreren Wochen nicht weiter geht. Ich möchte zum Teil sehr große XML Dateien in entweder csv oder txt umwandel, ich habe dazu das nachfolgende Script geschrieben welches mir auch jeden Knoten in eine Zeile schreibt, was allerdings fehlt und wo ich nun nicht weiter kommen: Ich hätte gerne nach jeden Tag einen Trenner Semikolon oder Komma.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 640947
Url: https://administrator.de/contentid/640947
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
18 Kommentare
Neuester Kommentar
Ich hätte gerne nach jeden Tag einen Trenner Semikolon oder Komma.
$in = 'C:\Daten\99.xml'
$out = 'C:\Daten\99.txt'
$XmlData = New-Object XML
$xmlData.Load($in)
$XmlData.document.BkToCstmrDbtCdtNtfctn.Ntfctn.Ntry.NtryDtls.TxDtls | %{"$($_.InnerText);"} | out-file $out -Encoding UTF8
Dann beschreibe besser was du willst dann erhältst du auch passende Antworten... Hier kennt keiner den Inhalt der XML.
Einfach als Beispiel IST und SOLL posten dann kommt hier auch jeder mit.
Wie man XML zu CSV wandelt kannst du auch schon hier nachlesen
XML in CSV umwandeln
Einfach als Beispiel IST und SOLL posten dann kommt hier auch jeder mit.
Wie man XML zu CSV wandelt kannst du auch schon hier nachlesen
XML in CSV umwandeln
Das ist keine valide XML Datei .... So kann man damit nichts anfangen.
Den Link oben aus dem hiesigen Forum lesen wäre ja schon ein Anfang ... Aber dafür hat's wohl beim TO offensichtlich nicht gereicht, da stehts ja eigentlich schon auf dem Serviertablett.
Zitat von @rb03.de:
Der Link ist gut, allerdings funktioniert eine Erstellung in dieser Art nur bis 4 MB ,alles was größer ist wird unvollständig in die CSV Datei geschrieben.
Nö das ist Blödsinn! Habe ich gerade mal probiert geht problemlos auch mit 200MB großen XMLs, scheint deine Mühle zu schwach auf der Brust zu sein oder du hast einen Fehler eingebaut.Der Link ist gut, allerdings funktioniert eine Erstellung in dieser Art nur bis 4 MB ,alles was größer ist wird unvollständig in die CSV Datei geschrieben.
Also dann hier nochmal zum einfachen Nachlesen und Nachmachen und verstehen ...
Beispiel XML
Code
Ergebnis nach Export in CSV
Also, works as expected!
Jetzt bist du dran.
Ich bin jetzt raus.
Beispiel XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<Items>
<Item>
<Vorname>Max</Vorname>
<Nachname>Muster</Nachname>
<Adresse>Musterstr. 6</Adresse>
<PLZ>99999</PLZ>
<Ort>Musterhausen</Ort>
</Item>
<Item>
<Vorname>Maria</Vorname>
<Nachname>Musterfrau</Nachname>
<Adresse>Musterstr. 99</Adresse>
<PLZ>99999</PLZ>
<Ort>Musterhausen</Ort>
</Item>
</Items>
</root>
Code
$in = 'A:\test.xml'
$out = 'A:\test.csv'
$xml = New-Object XML
$xml.Load($in)
$xml.root.Items.Item | export-csv $out -Delimiter ";" -NoType -Encoding UTF8
"Vorname";"Nachname";"Adresse";"PLZ";"Ort"
"Max";"Muster";"Musterstr. 6";"99999";"Musterhausen"
"Maria";"Musterfrau";"Musterstr. 99";"99999";"Musterhausen"
Jetzt bist du dran.
Ich bin jetzt raus.
Du brauchst und darfst für das obige Beispiel das InnerText nicht benutzen das zerstört in diesem Fall die schon vorhandene Objektstruktur und die ist für den Export via export-csv zwingend nötig, also weglassen und schon läuft das !