Lesen von XML-Dateien mit PowerShell

Für viele IT-Experten und Systemadministratoren ist Extended Markup Language eines der Themen, die in …

Geheimnis. Traditionell mussten IT-Experten nichts über XML-Dokumente, Tags, Attribute und Namespaces wissen. Aber mit der DevOps-Bewegung, der Infrastruktur als Code und einem großen Schub für das Konfigurationsmanagement in Umgebungen bekommen viele Administratoren einen Eindruck von XML und dessen Verwendung für ihre Skriptaufgaben.
Jeder, der Windows-Systeme verwaltet, verwendet PowerShell. Wie viele andere Sprachen Power Shell bietet native Unterstützung für das Erstellen, Ändern und Lesen von XML-Dateien. Es gibt verschiedene Möglichkeiten, XML-Dateien in PowerShell zu lesen. Am einfachsten ist es jedoch, eine Variable in den Typ zu typisieren [xml].
Typecasting ist ein Begriff, der verwendet wird, um das Ändern eines Variablentyps von einem zum anderen zu beschreiben. Dies in PowerShell zu tun ist einfach. PowerShell bietet Ihnen einen integrierten XML-Typbeschleuniger. Typbeschleuniger sind eine Abkürzung, um Variablen in verschiedene Typen umzuwandeln. Um eine Variable namens $ MyVariable zu transformieren, können Sie einfach hinzufügen [xml] an die Vorderseite der Variablen.
[xml]$ XmlDocument
Dies allein macht nicht viel anderes als das Erstellen einer leeren Variablen. Sie müssen etwas XML in diese Variable einfügen. Verwenden Sie zum Lesen eines vorhandenen XML-Dokuments das Cmdlet Get-Content und verweisen Sie auf eine XML-Datei. Wenn beispielsweise eine XML-Datei mit mehreren verschiedenen Fahrzeugen aufgeführt ist, liest der folgende Befehl diese Datei mit PowerShell:
[xml]$ XmlDocument = Get-Content -Path C: Cars.xml
Dadurch wird der Rohtext aus der Datei C: Cars.xm in die Variable $ XmlDocument übernommen, die automatisch in einen Variablentyp System.Xml.XmlDocument konvertiert wird. Sobald die Variable in diesem Format vorliegt, können wir Daten mit der bekannten Punktnotation von PowerShell lesen.
Davor in Abbildung 1 Wir schauen in die Datei C: Cars.xml und sehen, dass sie verschiedene Automarken, Modelle und andere Funktionen enthält.

XML-Details
Abbildung 1: Die XML-Datei mit der Automarke und anderen Details.

Im Figur 2 ist ein Beispiel dafür, wo ich eine Variable namens $ XmlDocument erstelle, in der der Variablentyp und die darin enthaltenen Variablen aufgeführt sind.

XML-Variable erstellen
Abbildung 2: Erstellen und Detaillieren der Variablen

Die Punktnotation erleichtert das Lesen des Dokuments und das Durchsuchen des XML-Baums, indem jeder Knoten als übergeordnetes und untergeordnetes Element behandelt wird. Wenn Sie beispielsweise die Variable eingeben, wird die Ausgabe wie in Abbildung 2 angezeigt. Hier sehen Sie das Dokumentelement – das übergeordnete Element aller anderen “untergeordneten” Elemente. Um tiefer einzutauchen und zu überprüfen, wie viele Autos sich im Dokument befinden, hängen Sie den Namen des übergeordneten Elements wie in an die Variable an Figur 3.

Variable anhängen
Abbildung 3: Wenn Sie der Variablen den Namen des übergeordneten Elements hinzufügen, wird die Anzahl der Fahrzeuge im XML-Dokument angezeigt.

Das Beispiel zeigt drei separate Car-Elemente unter dem übergeordneten Element Cars. Um noch tiefer zu gehen und herauszufinden, welche Art von Autos in diesem XML-Dokument enthalten sind, fügen Sie den Namen des Elements erneut wie in an das Ende an Figur 4.

XML-Elemente
Abbildung 4: Für weitere Details zu den Elementen in der XML-Datei fügen Sie den Namen des Elements hinzu.

Beachten Sie im obigen Beispiel die ft – auto – Zeichen. Diese dienen dazu, alle Eigenschaften zusammenzudrücken, damit sie nicht die Konsole überspannen. Sie beziehen sich nicht auf das Lesen des XML-Dokuments.
Elemente oder Tags sind im Wesentlichen die Beschriftungen, die ein neues Element kennzeichnen. in diesem Fall Autos. Autos haben jedoch auch Attribute. Autos haben eine Marke und ein Modell, die XML-Attribute sind. Bei Verwendung der Punktnotation kümmert sich PowerShell nicht um diese Unterscheidung. Es zeigt die Elemente und Attribute in einer Tabelle. Dies erleichtert das Navigieren im XML-Dokumentbaum. Was ist jedoch, wenn Sie bereits wissen, was Sie möchten? Wenn Sie nach einem bestimmten Autotyp suchen möchten, möchten Sie nicht für jedes untergeordnete Element einen Punkt eingeben.
Was ist, wenn Sie ein XML-Dokument haben, das Dutzende von Elementen enthält? Wenn Sie das XML-Dokument durchsuchen müssen; Es gibt einige Möglichkeiten. Da PowerShell die Dokumente in Objekte konvertiert hat, können Sie das Where-Object verwenden Cmdlet und filtern sie wie in Abbildung 5. Viele Anfänger verwenden diesen Ansatz, weil er vertraut und einfacher ist als andere Methoden, die zwar leistungsfähiger, aber schwerer zu verstehen sind.

Objekte filtern
Abbildung 5: Verwenden des Cmdlets Where-Object zum Filtern von Objekten in der XML-Datei.

Ein weiterer Ansatz für größere XML-Dateien

Wenn Sie eine viel größere XML-Datei lesen müssen, ist die Punktnotation nicht der beste Weg. Andere Methoden – wie die Select-XML Cmdlet oder XPath – sollte verwendet werden, um das XML-Dokument wie eine Datenbank zu durchsuchen, anstatt die Punktnotation zu verwenden.

Similar Posts

Leave a Reply