PowerShell bietet verschiedene Möglichkeiten, XML-Dokumente zu lesen, ohne viel Code zu schreiben oder XPath zu verwenden. Hier ist, wie Sie beginnen können.
XML zu manipulieren ist eines dieser Themen, das jeden, der es jemals getan hat, erschaudern lässt. Es ist in der Regel zeitaufwendig, schwer zu verstehen und nur ein allgemeiner Schmerz im Hintern. Das Durcheinander mit XML in einigen anderen Sprachen neben PowerShell erfordert im Wesentlichen das Speichern des XML-Baums, um sicherzustellen, dass Sie den richtigen Knoten auf der richtigen Ebene bearbeiten. Darüber hinaus müssen Sie wahrscheinlich auch lernen, obskure XPath-Abfragen zu schreiben, um den Inhalt in einem XML-Dokument zu finden.
PowerShell und Lesen von XML-Dateien
PowerShell hat immer noch XPath, aber Sie müssen es nicht unbedingt verwenden. PowerShell bietet eine einfache Möglichkeit, XML-Dateien zu lesen, zu bearbeiten und schließlich wieder auf der Festplatte zu speichern, ohne viel Code zu schreiben oder XPath zu kennen. PowerShell stellt dazu die Benutzerpunktnotation bereit, um jeden Knoten im XML-Dokument zu kennzeichnen. Aber zuerst fangen wir an, ein XML-Dokument zu lesen.
Eine Möglichkeit, ein XML-Dokument in PowerShell zu lesen, besteht darin, eine Variable in den Typ zu typisieren . Um diese Variable zu erstellen, können wir das Cmdlet Get-Content verwenden, um den gesamten Text in einem XML-Dokument zu lesen. Um die Ausgabe von Get-Content zu typisieren, können wir einfach den Text vor der Variablen voranstellen. Dies teilt PowerShell mit, dass diese Variable als System typisiert werden muss.XML.XmlDocument-Typ anstelle des Standard-Array-Typs, der normalerweise von Get-Content stammt.
$XmlDocument = Get-Content -Pfad C:Autos.xml
In diesem Artikel verwenden wir eine XML-Datei namens Cars.xml als Beispiel, das verschiedene Automarken und -modelle enthält.
Sobald Sie Get-Content ausgeführt haben, um den Rohtext aus dem XML-Dokument zu lesen und die Ausgabe in den Typ System umzuwandeln.XML.XmlDocument , Sie haben jetzt eine Variable namens $XmlDocument , die den gesamten XML-Knotenbaum enthält, der dieses Dokument darstellt.
Zu diesem Zeitpunkt ist das Lesen des Dokuments aufgrund der oben genannten Punktnotation eine triviale Aufgabe. Da wir jetzt das XML-Dokument im Speicher haben, können wir den Baum erkunden.
Beachten Sie, wie wir mit der Punktnotation immer tiefer in das Dokument eindringen können? Wenn wir eine Stelle im Dokument treffen, die einen Knoten des Typs like (Cars) enthält, können wir ihn wie ein PowerShell-Array behandeln und eine Indexnummer des gesuchten Knotens angeben. In diesem Fall finden wir das erste Auto im Dokument, indem wir die Indexnummer 0 angeben.
Angenommen, Sie möchten alle Autos in diesem XML-Dokument finden, die vier oder mehr Sitze haben. Durch einfaches Verwenden des allgemeinen PowerShell-Cmdlets Where-Object können wir diese Informationen problemlos abrufen.
Knoten kombinieren
Beachten Sie, dass PowerShell sowohl die Knoten (Elemente) als auch die XML-Attribute in einem Satz kombiniert? Auf diese Weise können Sie das Dokument einfach mithilfe der Punktnotation und des Cmdlets Where-Object durchkämmen. PowerShell kennt alle Attribute und Unterelemente, die jedem übergeordneten XML zugeordnet sind, und zeigt sie standardmäßig in einer übersichtlichen Tabelle an.
Wir haben Ihnen eine Methode gezeigt, mit der Sie XML-Dokumente lesen können. Eines der schönen Dinge an PowerShell ist, dass es so einfach oder so schwer sein kann, wie Sie es möchten. Wir haben Ihnen gezeigt, wie Sie Knoten in einem XML-Dokument mithilfe der Punktnotation finden. Wenn Sie jemals eine erweiterte Suche durchführen müssen, empfehlen wir Ihnen, Cmdlets wie Select-Xml zu verwenden, um leistungsfähigere Abfragen zu erstellen. In jedem Fall können Sie mit PowerShell fast alles aus einem XML-Dokument lesen und finden. Der Rest liegt an dir.