XML in CSV bat batch powershell
Als erstes mal frohe Ostern euch allen ;)
Nach dem Essen habe ich nun ein Problem das ich gern lösen würde. Ich habe eine XML Datei die im Excel mehrere Spalten hat. Die XML Datei will ich mit den Überschriften einfach in eine .csv Datei umgewandelt haben. Am liebsten mit einem batch oder powershell.
Kann mir jemand hier helfen
Nach dem Essen habe ich nun ein Problem das ich gern lösen würde. Ich habe eine XML Datei die im Excel mehrere Spalten hat. Die XML Datei will ich mit den Überschriften einfach in eine .csv Datei umgewandelt haben. Am liebsten mit einem batch oder powershell.
Kann mir jemand hier helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 335346
Url: https://administrator.de/contentid/335346
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
9 Kommentare
Neuester Kommentar
Hi.
Ohne den XML-Inhalt wird das hier nichts, da musst du schon den XML-Inhalt posten. Wie sollen wir hier wissen was deine XML enthält und wie es in deine CSV übersetzt werden soll??!
Hier steht wie es beispielhaft geht:
XML in CSV umwandeln
Gruß
Ohne den XML-Inhalt wird das hier nichts, da musst du schon den XML-Inhalt posten. Wie sollen wir hier wissen was deine XML enthält und wie es in deine CSV übersetzt werden soll??!
Hier steht wie es beispielhaft geht:
XML in CSV umwandeln
Gruß
brauche einfach genau die gleiche Angaben nur eben in einer csv Datei.
Und wie ?? Du scheinst nicht zu verstehen das sich das in X Varianten in eine CSV pressen lässt !!!! Sollen wir uns das nun auch wieder aus den Fingern saugen ??Für jede Rechnung nur eine einzige Zeile, oder für jede Position der Rechnung (wenn es mehrere sind) jeweils eine extra Zeile oder in einer Zeile mit Trenner getrennt, usw?? Hier fehlen einfach zu viele Informationen von deiner Seite
Das ist der Inhalt der XML nur eben ein paar Datensätze länger
Was ist länger ? Welche Tags kommen mehrfach vor, die Rechnungs Tags ?Lass dir doch nicht alles aus der Nase ziehen bitte. Danke!
Schön, aber das beantwortet nicht meine eigentliche Frage ob deine Rechnungen mehrere Positionen haben und ob für jede Position eine eigene Zeile mit den bereits bestehenden Daten der Rechnung generiert werden soll, das ist das was ich eigentlich wissen wollte.
$in = 'D:\data.xml'
$out = 'D:\data.csv'
$xml = new-Object XML; $xml.Load($in)
$xml.zr.rechnung | %{
$data = [ordered]@{}
$_.ParentNode.Attributes | %{$data.($_.Name) = $_.'#text'}
$_.SelectNodes('//*[not(*)]') | ?{$_.ParentNode.Name -notin @('position','positionen')} | %{if($_.HasAttributes){$_.Attributes | %{$data.($_.Name) = $_.'#text'}}else{$data.($_.LocalName) = $_.innerText}}
$_.positionen.position | %{
$data.pos_nr = $_.nr
$data.lieferschein = $_.lieferschein
$data.bestellung = $_.bestellung
$data.auftrag = $_.auftrag
$data.lfr_art_nr = $_.lfr_art_nr
$data.ean = $_.ean
$data.text = $_.text
$data.art_summe = $_.summe
$data.menge = $_.menge
$data.einheit = $_.einheit
$data.preis = $_.preis
$data.art_mwst = $_.mwst
[pscustomobject] $data
}
} | export-csv $out -Delimiter ";" -NoType -Encoding UTF8
Deine Ausgangsdaten haben auch überall nur Punkte als Dezimaltrenner! Es wird alles so übernommen wie es in der Ursprungsdatei steht.
Wenn du Komma's willst ersetze sie einfach mit einem "Replace" das sollte nun wirklich jeder selbst hinbekommen, ein bisschen darfst du ja gerne selbst dazusteuern.
Wenn du Komma's willst ersetze sie einfach mit einem "Replace" das sollte nun wirklich jeder selbst hinbekommen, ein bisschen darfst du ja gerne selbst dazusteuern.
Na dann Haken dran und feddich.