zini123
Goto Top

XML-Tags bearbeiten bzw. nummerieren

Hallo,

ich habe leider gar keine Ahnung von Powershell, nutze aber folgenden Code, den mir schon mal jemand im Forum geschrieben hatte und der super funktioniert:

gci 'C:\Users\Desktop\Export' -File -Filter *.xml | %{
$xml = New-Object XML
$xml.Load($_.Fullname)
$node = $xml.SelectSingleNode("/DUM/*[1]")
$xml.RemoveChild($xml.DocumentElement) | out-null
$xml.AppendChild($node) | out-null
$xml.Save($_.Fullname)
}

Wenn es irgendwie geht, würde ich Powershell jetzt gerne Folgendes zusätzlich sagen: suche nach dem mehrfach vorkommenden Knoten/Attribut (?) "<tag>"; benenne den ersten um in "<tag1>", den zweiten in "<tag2>" usw.

Hier noch ein Ausschnitt aus der XML-Datei (vor der Anwendung oben):

<?xml version="1.0" encoding="UTF-8"?>
<!-- exportiert aus Datenbank: DUM>
<DUM>
<record>
<tag>Text</tag>
[…]
</record>
</DUM>


Kann mir jemand helfen? Schon jetzt vielen Dank!!!

Content-Key: 601925

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

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

Mitglied: 145916
Solution 145916 Sep 04, 2020 updated at 12:29:02 (UTC)
Goto Top
Moinsens.
gci 'C:\Users\Desktop\Export' -File -Filter *.xml | %{  
    $xml = New-Object XML
    $xml.Load($_.Fullname)
    $node = $xml.SelectSingleNode("/DUM/*[1]")  
    $xml.RemoveChild($xml.DocumentElement) | out-null
    $xml.AppendChild($node) | out-null

    $xml.SelectNodes('//tag') | %{$cnt = 1}{  
        $new = $xml.CreateElement("tag$cnt")  
        $new.innerXML = $_.innerXML
        $_.ParentNode.AppendChild($new) | out-null
        $_.ParentNode.RemoveChild($_) | out-null
        $cnt++
    }
    $xml.Save($_.Fullname)
}
Gruß eagle
Member: Zini123
Zini123 Sep 04, 2020 at 12:58:53 (UTC)
Goto Top
Funktioniert perfekt! Vielen lieben Dank!!!
Mitglied: 145916
145916 Sep 04, 2020 at 13:24:42 (UTC)
Goto Top
Bittö, schönes Wochenende.