Verwenden der XPath-Syntax zum Rooten in XML-Dokumenten

XML ist eine großartige Möglichkeit, strukturierte Daten zu speichern, aber es kann schwierig sein, diese Daten auf sinnvolle Weise zu finden. Jede Sprache hat eine bestimmte Methode zum Abfragen von Namespaces, Elementen und Attributen in einer XML-Datei. PowerShell ist nicht anders. PowerShell bietet verschiedene Möglichkeiten zum Abfragen von XML-Dateien. Dieser Tipp konzentriert sich jedoch auf das Select-Xml-Cmdlet und die XPath-Syntax.

XPath ist eine Syntax zum Definieren von Teilen eines XML-Dokument. XPath gibt es seit 1999 und es wird als Standardmethode zum Abfragen von XML-Dokumenten verwendet.

XPath definiert ein XML-Dokument als Baum. Jeder Knoten in diesem XML-Dokument hat eine Beziehung zu anderen Knoten als eine Art Stammbaum. Wenn ein Knoten viele andere Knoten enthält, ist der einzelne Knoten der übergeordnete Knoten und die anderen Knoten sind die untergeordneten Knoten. Die Beziehungen zwischen diesen untergeordneten Knoten werden auch als Geschwister bezeichnet. Knoten werden auf diese Weise aufgeschlüsselt, um das Verständnis der Struktur eines XML-Dokuments zu erleichtern.

Eine XML-Datei, die ein Inventar für ein Autohaus enthält, sieht beispielsweise folgendermaßen aus:

SportEdition

Basic

SportEdition

Basic

Diese XML-Datei repräsentiert ein Autohaus. Das Autohaus ist ein Knoten, und “innerhalb” des Autohauses ist ein Knoten, der den Bestand an Autos darstellt. Das Autohaus ist das Elternteil des Autoknotens – das Kind. Dann ist jeder einzelne Fahrzeugknoten ein Kind des übergeordneten Fahrzeugknotens. Jedes Auto ist ein Geschwister miteinander. In diesem Beispiel gibt es einige Attribute. Ein Attribut ist ein bestimmtes Merkmal eines bestimmten Knotens. Sie werden feststellen, dass jedes Auto eine Marke und ein Modellattribut hat. Diese machen den Fahrzeugtyp spezifischer. Sie sind Eigenschaften dieses bestimmten Autoknotens.

Verwendung von XPath mit XML

Das ist die XML-Struktur, aber wie wird XPath verwendet, um diese Struktur abzufragen? XPath ist eine leistungsstarke und komplizierte Abfragesyntax. Um die Dinge einfach zu halten, behandeln wir eine allgemeine Verwendung von XPath und versuchen, alle Fahrzeugknoten in diesem Dokument zu finden. XPath bietet verschiedene Möglichkeiten, um Informationen in einem XML-Dokument zu finden. Es hängt davon ab, wie spezifisch Sie werden möchten. In unserem Beispiel haben wir einen übergeordneten Händlerknoten, der einen untergeordneten Autoknoten enthält, der dann mehrere untergeordnete Autoknoten enthält. Dies kann in dieser XPath-Syntax ausgedrückt werden:
/ Autohaus / Autos / Auto
Dies ist die spezifischste Methode, um die Abfrage auszudrücken, um alle Fahrzeugknoten abzurufen, die untergeordnete Elemente des Fahrzeugknotens sind, der dem untergeordneten Knoten des Autohauses untergeordnet ist, der das Stammverzeichnis des XML-Dokuments darstellt. Es ist ein bestimmter Weg. Es gibt jedoch andere Möglichkeiten, die Autoknoten zu finden. Wenn Sie nicht den gesamten Pfad möchten, geben Sie die Abfrage // car ein, um alle Autoknoten an einer beliebigen Stelle im XML-Dokument zu finden. Es ist weniger spezifisch, aber es kann Zeiten geben, in denen dies erforderlich ist.

Verwenden des Cmdlets Select-Xml

Lassen Sie uns nun PowerShell-spezifisch werden und herausfinden, wie Select-Xml funktioniert. Select-Xml ist ein PowerShell-Cmdlet, mit dem System.Xml.XmlDocument-Objekte abgefragt werden. Diese Cmdlet hat einen Parameter namens –Xpath zum Angeben einer XPath-Zeichenfolge, die auf dieses bestimmte XmlDocument-Objekt angewendet werden soll. Lassen Sie uns ein Beispiel durchgehen.
Um Select-Xml verwenden zu können, muss zunächst ein XmlDocument-Objekt abgefragt werden. Nur eine XML-Datei zu lesen, die auf Ihrem Computer vorhanden ist, funktioniert nicht. Wir müssen das XML-Dokument aus dem Dateisystem lesen und es dann in ein XmlDocument-Objekt konvertieren. Verwenden Sie das Cmdlet Get-Content, um den Klartext aus der XML-Datei in eine Variable zu lesen, wie in dargestellt Abbildung 1.

Cmdlet Get-Content
Abbildung 1: Lesen Sie das XML-Dokument mit dem Cmdlet Get-Content aus dem Dateisystem.


Nach dem Ausführen des Cmdlets sehen Sie, dass der BaseType ein Array ist, das nicht funktioniert. Es muss ein XmlDocument sein. Um die Variable $ xmlContents in ein XmlDocument-Objekt zu übertragen, wandeln Sie diese Variable in einen anderen Objekttyp um. Verwenden Sie dazu die [xml] Typ Beschleuniger wie in Figur 2.

Wirke die Variable
Abbildung 2: Um den BaseType von einem Array in ein XmlDocument zu ändern, verwenden Sie die [xml] Typ Beschleuniger.

Sie können jetzt sehen, dass $ xmlContents vom Typ XmlDocument ist. Wir sind jetzt bereit, Select-Xml zu verwenden.
Eine gute Möglichkeit, Select-Xml zu verwenden, besteht darin, das XML-Dokument an dieses weiterzuleiten und das zu verwenden –XPath Parameter wie in gesehen Figur 3.

Verwenden von Select-Xml
Abbildung 3: Verwenden Sie Select-Xml mit dem Parameter -XPath, um mit dem XML-Dokument zu arbeiten.

Mit derselben XPath-Abfrage, die ich zuvor verwendet habe, wurden zwei Autoknoten zurückgegeben, was ich erwartet hatte. Ich könnte auch die Verknüpfung verwenden //Wagen um das gleiche Ergebnis zu erhalten.

Tiefer in die Knoten graben

Was ist, wenn Sie Details zu den Autos wünschen? Sie müssen jeden der Knoten öffnen. Verwenden Sie die Cmdlets Select-Object – oder wählen Sie einfach den Alias ​​aus – und verwenden Sie die –ExpandProperty Parameter wie in gesehen Figur 4. Dies liest jeden der Knoten und zeigt, was in jedem liegt.

ExpandProperty-Parameter in XML
Abbildung 4: Mit dem Parameter –ExpandProperty wird der Inhalt der Knoten angezeigt.

Vielleicht brauchen Sie nur die Details für den Ford Taurus? Da “Ford” und “Taurus” XML-Attribute sind, ist der XPath, um dies zu erreichen, etwas komplizierter:
$ xmlContents | Select-Xml -XPath “// Auto[@make=”Ford”]”| select -ExpandProperty node
Ich habe das hinzugefügt [@make=”Ford”] Zeichenfolge zur XPath-Syntax. So werden XML-Attribute abgefragt. Um sich an diese Syntax zu erinnern, ist es hilfreich, sich vorzustellen, dass das kaufmännische Und dem Wort “Attribut” entspricht.

Weitere Informationen zu XPath

Wenn Sie mehr über die XPath-Syntax erfahren möchten, empfehlen wir Ihnen, die zu überprüfen XPath-Tutorial auf W3schools.com. Weitere Informationen zum Cmdlet Select-Xml finden Sie auf Petri.com unter dem Titel Durchsuchen Sie XML-Dateien mit PowerShell mit Select-Xml.

Similar Posts

Leave a Reply