freshman2017
Goto Top

TXT zu XML Konverter

Guten Abend,

mit nachfolgendem Skript:
(Quelle: Batch - TXT zu XML konvertieren)

$file = 'D:\orders.txt'  
$ausgabeordner = 'D:\Ausgabe'  

gc $file | %{
    $cols = $_.split(";")  
    [xml]$xml = @"  
<?xml version=`"$($cols)`" encoding=`"$($cols[1])`"?>  
<PurchaseOrder PurchaseOrderNumber="$($cols[2])" OrderDate="$($cols[3])">  
    <Address Type="$($cols[4])">  
        <Name>$($cols[5])</Name>
        <Street>$($cols[6])</Street>
        <City>$($cols[7])</City>
        <State>$($cols[8])</State>
        <Zip>$($cols[9])</Zip>
        <Country>$($cols[10])</Country>
    </Address>
    <Items/>
</PurchaseOrder>
"@  
    $itemsnode = $xml.SelectSingleNode("/PurchaseOrder/Items")  
    0..((($cols.Count - 11)/5)-1) | %{
        $index = 11+($_*5)
        $itm = $xml.CreateElement("Item")  
        $itm.SetAttribute("PartNumber",$cols[$index])  

        $node = $Xml.CreateElement("ProductName")  
        $node.innerText = $cols[$index+1]
        [void]$itm.AppendChild($node)
        $node = $Xml.CreateElement("Quantity")  
        $node.innerText = $cols[$index+2]
        [void]$itm.AppendChild($node)
        $node = $Xml.CreateElement("Price")  
        $node.innerText = $cols[$index+3]
        [void]$itm.AppendChild($node)
        $node = $Xml.CreateElement("Comment")  
        $node.innerText = $cols[$index+4]
        [void]$itm.AppendChild($node)
        [void]$itemsnode.AppendChild($itm)
    }
    $xml.Save((join-path $ausgabeordner "Order_$($cols[2]).xml"))  
}

Erstelle ich aus einer TXT eine XML- gerne möchte ich allerdings zusätzlich im Block für die Items, ganz am Ende, noch ein zusätzliches Element erstellen:

<PurchaseOrder PurchaseOrderNumber="$($cols[2])" OrderDate="$($cols[3])">  

Allerdings funktioniert es nicht so, wie ich gerne möchte:

"@  
    $itemsnode = $xml.SelectSingleNode("/PurchaseOrder/Items")  
    0..((($cols.Count - 11)/5)-1) | %{
        $index = 11+($_*5)
        $itm = $xml.CreateElement("Item")  
        $itm.SetAttribute("PartNumber",$cols[$index])  

        $node = $Xml.CreateElement("ProductName")  
        $node.innerText = $cols[$index+1]
        [void]$itm.AppendChild($node)
        $node = $Xml.CreateElement("Quantity")  
        $node.innerText = $cols[$index+2]
        [void]$itm.AppendChild($node)
        $node = $Xml.CreateElement("Price")  
        $node.innerText = $cols[$index+3]
        [void]$itm.AppendChild($node)
        $node = $Xml.CreateElement("Comment")  
        $node.innerText = $cols[$index+4]
        [void]$itm.AppendChild($node)
        [void]$itemsnode.AppendChild($itm)
    }
    $xml.Save((join-path $ausgabeordner "Order_$($cols[2]).xml"))  
}

Kann mir jemand helfen, wie ich es mit einbauen kann am Ende der Items?

Content-ID: 612810

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

Ausgedruckt am: 21.11.2024 um 22:11 Uhr