Extensible Markup Language (XML) ist ein reines Textformat, das zum Speichern strukturierter Daten verwendet wird. XML ist so geschrieben, dass es sowohl für Menschen als auch für Maschinen lesbar ist.
XML-Dokumente beginnen oft mit einer Deklaration, wie hier gezeigt:
<?xml version="1.0" encoding="utf-8"?>
Die Select-Xml Der Befehl kann verwendet werden, um XML-Dokumente mit der XPath-Abfragesprache zu durchsuchen. PowerShell v3 und höher enthält auch ein Select-Xml-Cmdlet. Dieses Cmdlet dient zum Suchen von Text in einer XML-Zeichenfolge oder in einem XML-Dokument. Insbesondere wurde es entwickelt, um XPath-Abfragen auszuführen.
In diesem Powershell-Tutorial zu XML erörtern wir, wie Sie XML durchsuchen und bestimmte Knoten extrahieren, indem Sie XML-Attribute durchsuchen. Wir verwenden dafür das Cmdlet select-Xml, die XPath-Abfrage würde sich jedoch auf Attributebene befinden. Mit den in diesem Tutorial bereitgestellten Beispielen sollten Sie in der Lage sein, XML-Daten in Powershell einfach abzufragen und die Ausgabewerte zu verwenden.
1. XML mit Attributen eingeben
Verwenden Sie für dieses Tutorial die folgende Eingabe-XML:
<Details> <department count="10"> <ID>10</ID> <dname>Administration</dname> <manager>200</manager> <location>1700</location> <revenue>77</revenue> </department> <department count="20"> <ID>20</ID> <dname>Marketing</dname> <manager>201</manager> <location>1800</location> <revenue>50</revenue> </department> </Details>
2. Laden Sie das XML in PowerShell
Wir laden das XML direkt in PowerShell, wie in der folgenden Abbildung gezeigt:
PS C:\> $xml_attributes=@" >> <Details> >> <department count="10"> >> <ID>10</ID> >> <dname>Administration</dname> >> <manager>200</manager> >> <location>1700</location> >> <revenue>77</revenue> >> </department> >> <department count="20"> >> <ID>20</ID> >> <dname>Marketing</dname> >> <manager>201</manager> >> <location>1800</location> >> <revenue>50</revenue> >> </department> >> </Details> >> "@ >> PS C:\>
Die Variable xml_attributes enthält die XML-Daten, nach denen wir mit dem Cmdlet select-Xml suchen können.
3. XML nach Attributen in PowerShell durchsuchen – XPath
Wenn Sie alle „count“-Attributwerte als Beispiel auflisten möchten, können Sie dies mit dem folgenden Befehl tun.
C:\>powershell Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:\> Select-Xml -Content $xml_attributes -XPath '//@count' | foreach {$_.node } #text ----- 10 20
Hier verwenden wir „//“, um das XML-Attribut direkt abzufragen, und verwenden die „foreach“-Anweisung, um den Wert in Powershell auszugeben.
4. XML-Knoten auflisten, die mit dem Attributwert übereinstimmen – Beispiel
In diesem Fall besteht die Anforderung darin, alle Abteilungsdetails aufzulisten, bei denen die Anzahl mit 10 übereinstimmt. Sie können dies einfach tun, indem Sie den Attributwert im XPath auf 10 abgleichen und die Ausgabe drucken. Der Powershell-Befehl dafür ist unten angegeben:
PS C:\> Select-Xml -Content $xml_attributes -XPath '//department[@count="10"]' | foreach {$_.node} count : 10 ID : 10 dname : Administration manager : 200 location : 1700 revenue : 77
Zusammenfassung
XML ist einfach zu handhaben. Es kann zur Konfiguration und Datenspeicherung verwendet werden. Sie haben gesehen, wie Sie ein Startdokument manuell einrichten, es in die Shell laden und seine Elemente aufzählen. XPath kann zum Navigieren oder Durchsuchen eines XML-Dokuments verwendet werden. PowerShell (und .NET) verwendet XPath 1.0.