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

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

Printed on: April 28, 2024 at 17:04 o'clock

Mitglied: 146189
146189 Nov 07, 2020, updated at Nov 08, 2020 at 09:31:12 (UTC)
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