Ändern Sie den Inhalt von XML-Dateien mit PowerShell-Skript

MD Aminul Islam 20 Juni 2023
  1. Methode 1: Verwenden Sie die Kindposition
  2. Methode 1: Verwenden Sie die ID
  3. Methode 3: Verwenden Sie settings.skinsettings.setting
Ändern Sie den Inhalt von XML-Dateien mit PowerShell-Skript

Das XML, auch bekannt als Extensible Markup Language, wird hauptsächlich verwendet, um strukturierte Informationen wie Dokumente, Daten, Bücher usw. in einem einfachen textbasierten Format darzustellen.

Dieser Artikel zeigt, wie wir eine XML-Datei mit dem PowerShell-Skript ändern können. Außerdem werden wir notwendige Beispiele und Erklärungen sehen, um das Thema leicht verständlich zu machen.

Angenommen, wir haben eine XML-Datei mit dem folgenden Inhalt.

<settings>
  <setting id="LocationOne" value="Dhaka, Bangladesh" />
  <setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>

Jetzt werden wir die obige XML-Datei mit drei Methoden ändern.

Methode 1: Verwenden Sie die Kindposition

Wenn Sie die Position des untergeordneten Knotens des bestimmten übergeordneten Knotens kennen, können Sie den Wert des bestimmten untergeordneten Knotens leicht ändern. Zu diesem Zweck können wir dem unten angegebenen Codebeispiel folgen.

$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.ChildNodes.Item(0).value = "New York, USA"
$xml.Save("G:\PowerShell\Myxml.xml")

In unserem obigen Beispiel lesen wir zuerst den Inhalt der XML-Datei und finden dann den untergeordneten Knoten anhand seiner Position. Hier werden die ChildNodes verwendet, um den Kindknoten zu finden, und wir wählen das spezifische Kind mit Item(0) aus.

Zuletzt speichern wir die modifizierte XML-Datei mit der Zeile $xml.Save("G:\PowerShell\Myxml.xml"). Nach dem Ausführen des Skripts sehen Sie den folgenden Inhalt in Ihrer XML-Datei.

<settings>
  <setting id="LocationOne" value="New York, USA" />
  <setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>

Methode 1: Verwenden Sie die ID

Wir können die XML-Datei auch ändern, indem wir die id eines bestimmten Elements verwenden. Hier wird hauptsächlich die id verwendet, um den jeweiligen untergeordneten Knoten auszuwählen. Sie können diese Methode verwenden, um die XML-Datei zu ändern, indem Sie dem unten angegebenen Beispiel folgen:

$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.SelectSingleNode("//setting[@id='LocationOne']").value = "New York, USA"
$xml.Save("G:\PowerShell\Myxml.xml")

Wie in unserem vorherigen Beispiel lesen wir zuerst den Inhalt der XML-Datei. Danach identifizieren und wählen wir den spezifischen untergeordneten Knoten mit SelectSingleNode("//setting[@id='LocationOne']") und ändern seinen Wert mit value.

Zuletzt haben wir die modifizierte XML-Datei mit der Zeile $xml.Save("G:\PowerShell\Myxml.xml") gespeichert,
Nachdem Sie das obige Skript ausgeführt haben, sehen Sie den folgenden Inhalt in Ihrer XML-Datei.

<settings>
  <setting id="LocationOne" value="New York, USA" />
  <setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>

Methode 3: Verwenden Sie settings.skinsettings.setting

Sie können diesem Beispiel folgen, wenn ein übergeordneter Knoten einen einzelnen untergeordneten Knoten enthält. Um diese Methode zu verstehen, nehmen wir an, wir haben eine XML-Datei mit dem folgenden Inhalt.

<settings>
  <skinsettings>
    <setting type="bool">false</setting>
  </skinsettings>
</settings>

Schauen Sie sich unser Beispiel unten an, wo wir die oben freigegebene XML-Datei mit dieser Methode modifiziert haben. Der Code für unser Beispiel sieht wie folgt aus:

$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.skinsettings.setting."#text" = "true"
$xml.Save("G:\PowerShell\Myxml.xml")

Im obigen Beispiel wählen wir nach dem Lesen des Inhalts der XML-Datei den spezifischen untergeordneten Knoten aus, indem wir die Zeile settings.skinsettings.setting verwenden.

Zuletzt haben wir die modifizierte XML-Datei mit der Zeile $xml.Save("G:\PowerShell\Myxml.xml") gespeichert. Sie können diese Methode verwenden, um die XML-Datei zu ändern, indem Sie dem unten stehenden Beispiel folgen:

<settings>
  <skinsettings>
    <setting type="bool">true</setting>
  </skinsettings>
</settings>

Bitte beachten Sie, dass die hier freigegebenen Beispielcodes nur in der Windows PowerShell-Umgebung ausführbar sind.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Verwandter Artikel - PowerShell XML