compu2000
Goto Top

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:

$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>

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

146189
146189 07.11.2020, aktualisiert am 08.11.2020 um 10:31:12 Uhr
Goto Top
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