Mit Powershell mehrere XML in eine CSV konvertierten
Guten Tag,
ich benötige bei nachfolgendem Skript nochmal Eure Hilfe. Ich konvertiere mit nachfolgender Skript eine XML in eine CSV:
Allerdings sind im Eingangsordner mehrere XML Dateien (unterschiedliche Dateinamen) vorhanden die nacheinander Zeilenweise in die CSV geschrieben werden sollen.
In jeder XML können mehrere Zeilen enthalten sein. Siehe unten.
Wie muss ich das anpassen?
ich benötige bei nachfolgendem Skript nochmal Eure Hilfe. Ich konvertiere mit nachfolgender Skript eine XML in eine CSV:
$ordner = 'D:\bestellungen'
ls $ordner -File -Filter *.xml | %{
$xml = New-Object XML
$xml.Load($_.FullName)
($xml.TransferFile.Bestellungen.ABL | select Belegnummer,Bestellreferenz,Zustelldatum | ConvertTo-CSV -Delimiter ";" -NoType) -replace '$',';' | out-file (join-path $ordner "abl.csv") -Encoding UTF8
}
Allerdings sind im Eingangsordner mehrere XML Dateien (unterschiedliche Dateinamen) vorhanden die nacheinander Zeilenweise in die CSV geschrieben werden sollen.
In jeder XML können mehrere Zeilen enthalten sein. Siehe unten.
Wie muss ich das anpassen?
<TransferFile>
KundenNummer>22932</KundenNummer>
<RueckmeldeDatum>2020-09-24T09:14:11+01:00</RueckmeldeDatum>
<Bestellungen>
<ABL>
</ABL>
<ABL>
</ABL>
<ABL>
</ABL>
<ABL>
</ABL>
<ABL>
<BelegNummer>12345</BelegNummer>
<Bestellreferenz>7213508</Bestellreferenz>
<Zustelldatum>24.08.2020</Zustelldatum>
<Spedtion>
<Name>Trans-O-Flex</Name>
<Referenznummer>338182</Referenznummer>
</Spedtion>
<image>
<imagename>000000114003438.TIF</imagename>
<content>
</content>
</image>
</ABL>
<ABL>
<BelegNummer>123456</BelegNummer>
<Bestellreferenz>72135084</Bestellreferenz>
<Zustelldatum>24.08.2020</Zustelldatum>
<Spedtion>
<Name>Trans-O-Flex</Name>
<Referenznummer>338182</Referenznummer>
</Spedtion>
<image>
<imagename>000000114003438.TIF</imagename>
<content>
</content>
</image>
</ABL>
<Bestellung>
<BelegNummer>54234567</BelegNummer>
<Bestellreferenz>7268105</Bestellreferenz>
<LieferDatum>2020-09-01T14:01:42+01:00</LieferDatum>
<Spedition>
<Name>Trans-O-Flex</Name>
<Referenznummer>401505</Referenznummer>
</Spedition>
<PDF>
<PdfDateiname>76543456pdf</PdfDateiname>
<content>
</content>
</PDF>
<Positionen>
<Position>
<PositionsNummer>1</PositionsNummer>
<PZN>xxx</PZN>
<ErsatzArtikel>false</ErsatzArtikel>
<Menge>6</Menge>
<Bezeichnung>xxx</Bezeichnung>
<Bestellreferenz/>
</Position>
</Positionen>
</Bestellung>
<Bestellung>
<BelegNummer>542345678</BelegNummer>
<Bestellreferenz>72681058</Bestellreferenz>
<LieferDatum>2020-09-01T14:01:42+01:00</LieferDatum>
<Spedition>
<Name>Trans-O-Flex</Name>
<Referenznummer>4015045</Referenznummer>
</Spedition>
<PDF>
<PdfDateiname>76543456pdf</PdfDateiname>
<content>
</content>
</PDF>
<Positionen>
<Position>
<PositionsNummer>1</PositionsNummer>
<PZN>xxx</PZN>
<ErsatzArtikel>false</ErsatzArtikel>
<Menge>6</Menge>
<Bezeichnung>xxx</Bezeichnung>
<Bestellreferenz/>
</Position>
</Positionen>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
<Bestellung>
</Bestellung>
</Bestellungen>
</TransferFile>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 620145
Url: https://administrator.de/forum/mit-powershell-mehrere-xml-in-eine-csv-konvertierten-620145.html
Ausgedruckt am: 19.02.2025 um 21:02 Uhr
1 Kommentar

Wie muss ich das anpassen?
$ordner = 'D:\bestellungen'
(ls $ordner -File -Filter *.xml | %{
$xml = New-Object XML
$xml.Load($_.FullName)
$xml.TransferFile.Bestellungen.ABL | select Belegnummer,Bestellreferenz,Zustelldatum
} | ConvertTo-CSV -Delimiter ";" -NoType) -replace '$',';' | out-file (join-path $ordner "abl.csv") -Encoding UTF8