Powershell XML elemente hinzufügen
Hi@PS Profi's
Variante 1:
Variante2:
Was macht sich besser beim Zugriff auf die Elemente?
Variante 1 bekomme ich in die XML Datei geschrieben.
Variante 2 noch nicht, zumindestens wenn nicht nur 1 Element drin stehen soll.
Wenn ich das richtig verstanden habe holt man sich mit SelectSingleNode element die erste Node, das würde das Verhalten erklären, das beim
2ten Lauf zwar ein neues Element angelegt wird, allerdings die Subnodes in die ersteelement Node eingefügt werden.
Wie komme ich an die letzte element Node ran?
Endet in einer null-valued expression. ;(
Gruß vom H41mSh1C0r
Variante 1:
<?xml version="1.0" encoding="utf-8"?>
<inhalt>
<elements>
<element name="Name1" value="Wert1" active="1" />
<element name="Name2" value="Wert2" active="1" />
<element name="Name3" value="Wert3" active="1" />
<element name="Name4" value="Wert4" active="1" />
<element name="Name5" value="Wert5" active="1" />
</elements>
</inhalt>
Variante2:
<?xml version="1.0"?>
<inhalt>
<elements>
<element>
<name> 1 </name>
<value> Wert1 </value>
<active> 1 </active>
</element>
<element>
<name> 2 </name>
<value> Wert2 </value>
<active> 1 </active>
</element>
</elements>
</inhalt>
Was macht sich besser beim Zugriff auf die Elemente?
Variante 1 bekomme ich in die XML Datei geschrieben.
Variante 2 noch nicht, zumindestens wenn nicht nur 1 Element drin stehen soll.
$newelement = $xmlDoc.CreateElement('element')
$elements = $xmlDoc.SelectSingleNode('//elements')
$elements.AppendChild($newelement)
$newelement = $xmlDoc.CreateElement('name')
$elements = $xmlDoc.SelectSingleNode('//element')
$elements.AppendChild($newelement)
$newelement = $xmlDoc.CreateElement('value')
$elements = $xmlDoc.SelectSingleNode('//element')
$elements.AppendChild($newelement)
$newelement = $xmlDoc.CreateElement('active')
$elements = $xmlDoc.SelectSingleNode('//element')
$elements.AppendChild($newelement)
Wenn ich das richtig verstanden habe holt man sich mit SelectSingleNode element die erste Node, das würde das Verhalten erklären, das beim
2ten Lauf zwar ein neues Element angelegt wird, allerdings die Subnodes in die ersteelement Node eingefügt werden.
Wie komme ich an die letzte element Node ran?
$newelement = $xmlDoc.CreateElement('name')
$elements = $xmlDoc.SelectSingleNode('//element[last()]')
$elements.AppendChild($newelement)
Endet in einer null-valued expression. ;(
Gruß vom H41mSh1C0r
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 293567
Url: https://administrator.de/forum/powershell-xml-elemente-hinzufuegen-293567.html
Ausgedruckt am: 16.04.2025 um 10:04 Uhr
3 Kommentare
Neuester Kommentar

Völlig falsche herangehensweise mit dem ständigen Suchen der Nodes... Du solltest die Nodes alle erst erzeugen und zum Schluss an das Parent-Element "Elements" einhängen, dann brauchst du auch nicht das letzte Element erneut suchen...
Gruß grexit
$nodeElement = $xmlDoc.CreateElement('element')
$nodeName = $xmlDoc.CreateElement('name')
$nodeValue = $xmlDoc.CreateElement('value')
$nodeActive = $xmlDoc.CreateElement('active')
$nodeElement.AppendChild($nodeName)
$nodeElement.AppendChild($nodeValue)
$nodeElement.AppendChild($nodeActive)
$elements = $xmlDoc.SelectSingleNode('/inhalt/elements')
$elements.AppendChild($nodeElement)
Was macht sich besser beim Zugriff auf die Elemente?
Geht beides, ersteres spart Platz und ist kompakter.Gruß grexit

Nope, bei mir war es hier 11:30, ich sitze auf der anderen Seite der Erdkugel
Jetzt ist es bei mir Geisterstunde ....