XML zu CSV, aber richtig Formatiert?
Hallo zusammen,
ich würde gern mit Powershell eine XML zu einer CSV konvertieren.
Grundsätzlich bekomme ich das auch hin aber es fehlen mir einiges an Angaben und da ich nicht so den plan von Powershell habe benötige ich hier mal jemand der mir dabei helfen kann
Die XML sieht folgendermaßen aus:
Das benötige ich als CSV zum einspielen.. Jedoch brauch ich auch nicht alle Felder. So ist es mir z.b nur wichtig das ich die Komplette Adresse habe, die Quantity, ItemNo und OrderNo.
Ich müsste das aber Pro Artikel in einer reihe haben (horizontal)
Der einfache teil ist bestimmt, das die XML immer mit Order beginnt und dann einfach zahlen dahinter hat. Es kann also auch vorkommen das sich in einem Order 10 XML befinden, die alle mit Order beginnen.
Habt ihr da ne Idee wie man das am besten umsetzen kann?
ich würde gern mit Powershell eine XML zu einer CSV konvertieren.
Grundsätzlich bekomme ich das auch hin aber es fehlen mir einiges an Angaben und da ich nicht so den plan von Powershell habe benötige ich hier mal jemand der mir dabei helfen kann
Die XML sieht folgendermaßen aus:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ottopartner xmlns="http://www.ottogroupb2b.com/ottopartner">
<LKZ>82057</LKZ>
<PurchaseOrder>
<BuyerILN>4029686000001</BuyerILN>
<OrderNo>011033</OrderNo>
<OrderDate>2021-01-06T06:17:27.000+01:00</OrderDate>
<OrderCurrency>EUR</OrderCurrency>
<TotalOrderValue>173.42</TotalOrderValue>
<DeliveryDate>2021-01-08</DeliveryDate>
<DeliveryAddress>
<Address>
<ILN>4029686663282</ILN>
<Name>Name des Kunden</Name>
<Street>StraßeBlaBla</Street>
<Zip>99999</Zip>
<City>Köln</City>
<Country>GERMANY</Country>
<CountryISOCode>DE</CountryISOCode>
</Address>
</DeliveryAddress>
<ShippingMode>Carrier</ShippingMode>
<TermOfShipment>free</TermOfShipment>
<ItemPackaging>NormCarton</ItemPackaging>
<TermsOfPayment>10-days-net</TermsOfPayment>
<OrderItem>
<ItemNo>104727OT-00</ItemNo>
<ClientItemNo>18563222</ClientItemNo>
<ItemDesc>Zapfengirlande</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529098615</EAN>
<BuyingPrice>8.74</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>5018033OT-01</ItemNo>
<ClientItemNo>22049616</ClientItemNo>
<ItemDesc>Dekofigur Hase</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529400937</EAN>
<BuyingPrice>7.86</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>5016584OT-40</ItemNo>
<ClientItemNo>25201120</ClientItemNo>
<ItemDesc>Kerzenhalter</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529101469</EAN>
<BuyingPrice>8.74</BuyingPrice>
<Quantity>4</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>6216511OT-00</ItemNo>
<ClientItemNo>28653964</ClientItemNo>
<ItemDesc>Kerzenhalter</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529096970</EAN>
<BuyingPrice>15.29</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>6016921OT-49</ItemNo>
<ClientItemNo>49637964</ClientItemNo>
<ItemDesc>Vase,Crumble</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529096635</EAN>
<BuyingPrice>7.86</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>7516510OT-00</ItemNo>
<ClientItemNo>62339506</ClientItemNo>
<ItemDesc>Hänger Hirsch,Sten</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529097441</EAN>
<BuyingPrice>10.92</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>6016922OT-49</ItemNo>
<ClientItemNo>64679161</ClientItemNo>
<ItemDesc>Vase,Crumble</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529096659</EAN>
<BuyingPrice>10.92</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>534534OT-38</ItemNo>
<ClientItemNo>76234940</ClientItemNo>
<ItemDesc>Schale,Day"N"Night</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529109823</EAN>
<BuyingPrice>7.86</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>534535OT-38</ItemNo>
<ClientItemNo>77244124</ClientItemNo>
<ItemDesc>Schale,Day"N"Night</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529109830</EAN>
<BuyingPrice>10.92</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>6216518OT-00</ItemNo>
<ClientItemNo>87380433</ClientItemNo>
<ItemDesc>Etagere</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529097045</EAN>
<BuyingPrice>15.29</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>6216517OT-00</ItemNo>
<ClientItemNo>87458330</ClientItemNo>
<ItemDesc>Etagere</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529097038</EAN>
<BuyingPrice>7.86</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>5216501OT-01</ItemNo>
<ClientItemNo>89138819</ClientItemNo>
<ItemDesc>LED Girlande Sterne</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529101940</EAN>
<BuyingPrice>8.74</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>5616522OT-00</ItemNo>
<ClientItemNo>92061817</ClientItemNo>
<ItemDesc>Teller,Hammered</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529095836</EAN>
<BuyingPrice>13.10</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
<OrderItem>
<ItemNo>5616533OT-00</ItemNo>
<ClientItemNo>97951733</ClientItemNo>
<ItemDesc>Teelichthalter</ItemDesc>
<QuantityUnit>PCE</QuantityUnit>
<OrderSKU>
<Size> </Size>
<EAN>4003529095850</EAN>
<BuyingPrice>13.10</BuyingPrice>
<Quantity>1</Quantity>
</OrderSKU>
</OrderItem>
</PurchaseOrder>
</ottopartner>
Das benötige ich als CSV zum einspielen.. Jedoch brauch ich auch nicht alle Felder. So ist es mir z.b nur wichtig das ich die Komplette Adresse habe, die Quantity, ItemNo und OrderNo.
Ich müsste das aber Pro Artikel in einer reihe haben (horizontal)
Der einfache teil ist bestimmt, das die XML immer mit Order beginnt und dann einfach zahlen dahinter hat. Es kann also auch vorkommen das sich in einem Order 10 XML befinden, die alle mit Order beginnen.
Habt ihr da ne Idee wie man das am besten umsetzen kann?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 647016
Url: https://administrator.de/contentid/647016
Ausgedruckt am: 21.11.2024 um 20:11 Uhr
2 Kommentare
Neuester Kommentar
Is eh immer die selbe Leier ...
Gruß j.
$xmlfiles = ls 'D:\Orders' -Filter *.xml -File
foreach($file in $xmlfiles){
$xml = New-Object XML
$xml.Load($file.Fullname)
$xml.ottopartner.PurchaseOrder.OrderItem | %{
[pscustomobject]@{
OrderNo = $_.ParentNode.OrderNo
OrderDate = $_.ParentNode.OrderDate
Name = $_.ParentNode.DeliveryAddress.Address.Name
Street = $_.ParentNode.DeliveryAddress.Address.Street
Zip = $_.ParentNode.DeliveryAddress.Address.Zip
City = $_.ParentNode.DeliveryAddress.Address.City
Country = $_.ParentNode.DeliveryAddress.Address.Country
ItemNo = $_.ItemNo
EAN = $_.OrderSKU.EAN
QuantityUnit = $_.QuantityUnit
BuyingPrice = $_.OrderSKU.BuyingPrice
Quantity = $_.OrderSKU.Quantity
}
} | export-csv (join-path $file.DirectoryName "$($file.BaseName).csv") -NoTypeInformation -Delimiter ";" -Encoding UTF8 -verbose
}