springstil
Goto Top

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 face-smile

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?

Content-Key: 647016

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

Printed on: April 26, 2024 at 19:04 o'clock

Mitglied: 147323
Solution 147323 Feb 01, 2021 updated at 10:39:08 (UTC)
Goto Top
Is eh immer die selbe Leier ...
$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  
}
Gruß j.
Member: Springstil
Springstil Feb 01, 2021 at 10:53:07 (UTC)
Goto Top
Vielen Dank dafür!

Ich habe noch ein paar die ich von XML auf CSV umstellen muss. Aber mit dem Skript erklärt es sich für mich glaube ich ganz gut wie ich das machen muss. Vielen lieben dank face-smile