PowerShell oferuje kilka sposobów odczytywania dokumentów XML, bez pisania dużej ilości kodu lub używania XPath. Oto jak zacząć.
manipulowanie XML-em to jeden z tych tematów, który sprawia, że każdy, kto kiedykolwiek to zrobił, się kurczy. Zazwyczaj jest to czasochłonne, trudne do zrozumienia i po prostu ogólny ból w tyłku. Używanie XML w innych językach poza PowerShell wymaga zasadniczo zapamiętywania drzewa XML, aby upewnić się, że manipulujesz właściwym węzłem na właściwym poziomie. Ponadto prawdopodobnie będziesz musiał nauczyć się pisać niejasne zapytania XPath, aby znaleźć zawartość w dokumencie XML.
PowerShell i czytanie plików XML
PowerShell nadal ma XPath, ale niekoniecznie musisz go używać. PowerShell zapewnia łatwy sposób odczytywania plików XML, manipulowania nimi i wreszcie zapisywania ich z powrotem na dysku bez pisania dużo kodu lub znajomości XPath. PowerShell robi to, dostarczając notację kropek użytkownika, aby oznaczać każdy węzeł w dokumencie XML. Ale najpierw zacznijmy czytać dokument XML.
jednym ze sposobów odczytu dokumentu XML w PowerShell jest wpisanie zmiennej do typu . Aby utworzyć tę zmienną, możemy użyć polecenia Get-Content do odczytania całego tekstu w dokumencie XML. Aby wpisać wynik Get-Content możemy po prostu poprzedzić tekst przed zmienną. To mówi Powershellowi, że potrzebujemy tego typu zmiennej jako systemu.Xml.Typ XmlDocument zamiast domyślnego typu tablicy, który zwykle pochodzi z Get-Content.
$XmlDocument = Get-Content-Path C:Samochody.xml
w tym artykule użyjemy pliku XML o nazwie Cars.xml jako przykład, który zawiera różne marki i modele samochodów.
Po uruchomieniu Get-Content, aby odczytać surowy tekst z dokumentu XML i przesłać dane wyjściowe do systemu typowania.Xml.XmlDocument, masz teraz zmienną o nazwie $XmlDocument, która zawiera całe drzewo węzłów XML, które reprezentuje ten dokument.
w tym momencie czytanie dokumentu jest banalnym zadaniem ze względu na wspomnianą notację kropkową. Ponieważ mamy teraz dokument XML w pamięci, możemy zbadać drzewo.
zauważ, jak możemy wnikać coraz głębiej w dokument za pomocą notacji kropkowej? Jeśli trafimy w miejsce w dokumencie, które zawiera węzeł typu like (Cars), możemy potraktować go jak tablicę PowerShell i podać numer indeksu węzła, którego szukamy. W tym przypadku znajdujemy pierwszy samochód w dokumencie, określając Numer indeksu 0.
Załóżmy, że chcesz znaleźć wszystkie samochody w tym dokumencie XML, które mają cztery lub więcej miejsc. Po prostu za pomocą wspólnego cmdlet PowerShell Where-Object możemy łatwo pobrać te informacje.
łączenie węzłów
zauważ, że PowerShell łączy zarówno węzły (elementy), jak i atrybuty XML w jednym zestawie? Pozwala to na łatwe przeczesywanie dokumentu za pomocą notacji kropkowej i polecenia Where-Object. PowerShell zna wszystkie atrybuty i podelementy powiązane z każdym nadrzędnym XML i domyślnie wyświetla je w przyjemnej tabeli.
pokazaliśmy ci jedną metodę, której możesz użyć do odczytu dokumentów XML. Jedną z fajnych rzeczy w PowerShell jest to, że może być tak proste lub tak trudne, jak chcesz. Pokazaliśmy, jak znaleźć węzły w dokumencie XML za pomocą notacji kropkowej. Jeśli kiedykolwiek będziesz potrzebował bardziej zaawansowanego wyszukiwania, sugerujemy użycie cmdletów, takich jak Select-Xml, do tworzenia bardziej zaawansowanych zapytań. Tak czy inaczej, PowerShell pozwoli Ci przeczytać i znaleźć prawie wszystko z dokumentu XML. Reszta zależy od Ciebie.