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
Please also mark the comments that contributed to the solution of the article
Content-Key: 293567
Url: https://administrator.de/contentid/293567
Printed on: April 18, 2024 at 00:04 o'clock
3 Comments
Latest comment
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 ....