PowerShell erbjuder flera sätt att läsa XML-dokument, utan att skriva mycket kod eller använda XPath. Så här kan du komma igång.
att manipulera XML är ett av de ämnen som får alla som någonsin har gjort det att krypa. Det är vanligtvis tidskrävande, svårt att förstå och bara en allmän smärta i rumpan. Att röra med XML på några andra språk förutom PowerShell kräver i huvudsak att memorera XML-trädet för att se till att du manipulerar rätt nod på rätt nivå. Utöver det måste du förmodligen också lära dig att skriva obskyra XPath-frågor för att hitta innehållet i ett XML-dokument.
PowerShell och läsa XML-filer
PowerShell har fortfarande XPath men du behöver inte nödvändigtvis använda den. PowerShell ger ett enkelt sätt att läsa XML-filer, manipulera dem och slutligen spara dem tillbaka till disken utan att skriva mycket kod eller veta XPath. PowerShell gör detta genom att ge användaren punktnotation för att beteckna varje nod i XML-dokumentet. Men först, låt oss börja läsa ett XML-dokument.
ett sätt att läsa ett XML-dokument i PowerShell är att typecast en variabel till typen . För att skapa den här variabeln kan vi använda cmdlet Get-Content för att läsa all text i ett XML-dokument. För att typecast utmatningen av Get-Content kan vi helt enkelt förbereda texten före variabeln. Detta berättar för PowerShell att vi behöver denna variabla typecasted som ett System.Xml.XmlDocument-typ istället för standardmatristypen som normalt kommer från Get-Content.
$XmlDocument = Get-innehåll-sökväg C:bilar.xml
i den här artikeln använder vi en XML-fil som heter Cars.xml som ett exempel, som innehåller olika märken och modeller av bilar.
När du har kört Get-Content för att läsa den råa texten från XML-dokumentet och kasta utmatningen till typsystem.Xml.Xmldocument, du har nu en variabel som heter $XmlDocument som innehåller hela XML-nodträdet som representerar det dokumentet.
vid denna tidpunkt är läsning av dokumentet en trivial uppgift på grund av ovannämnda punktnotation. Eftersom vi nu har XML-dokumentet i minnet kan vi utforska trädet.
Lägg märke till hur vi kan komma djupare och djupare in i dokumentet med punktnotation? Om vi träffar en plats i dokumentet som innehåller nod av liknande typ (bilar) kan vi sedan behandla det som en PowerShell-array och ange ett indexnummer för noden vi letar efter. I det här fallet hittar vi den första bilen i dokumentet genom att ange indexnumret 0.
låt oss säga att du vill hitta alla bilar i detta XML-dokument som har fyra eller fler platser. Helt enkelt genom att använda den gemensamma PowerShell cmdlet Where-Object kan vi enkelt hämta den informationen.
kombinera noder
Lägg märke till att PowerShell kombinerar både noderna (element) och XML attribut allt i en uppsättning? Detta gör att du enkelt kan kamma igenom dokumentet bara genom att använda punktnotation och Where-Object cmdlet. PowerShell känner till alla attribut och underelement som är associerade med varje förälder XML och visar dem i en trevlig tabell för dig som standard.
Vi har visat dig en metod som du kan använda för att läsa XML-dokument med. En av de trevliga sakerna med PowerShell är att det kan vara så enkelt eller så svårt som du vill att det ska vara. Vi har visat dig hur du hittar noder i ett XML-dokument med punktnotation. Om du någonsin har behov av att göra mer avancerad sökning, föreslår vi att du tittar på att använda cmdlets som Select-Xml för att bygga mer kraftfulla frågor. Hur som helst, PowerShell låter dig läsa och hitta nästan vad som helst från ett XML-dokument. Resten är upp till dig.