PowerShell tilbyr flere måter å lese XML-dokumenter på, uten å skrive mye kode eller bruke XPath. Her er hvordan du kan komme i gang.
Manipulere XML er et av de emnene som gjør noen som noen gang har gjort det cringe. Det er vanligvis tidkrevende, vanskelig å forstå og bare en generell smerte i baken. Messing MED XML på noen andre språk i Tillegg Til PowerShell krever i hovedsak å huske XML-treet for å sikre at du manipulerer riktig node på riktig nivå. På toppen av det må du sannsynligvis også lære å skrive uklare XPath-spørringer for å finne innholdet i ET XML-dokument.
PowerShell Og Lese XML-filer
PowerShell har Fortsatt XPath, men du trenger ikke nødvendigvis å bruke den. PowerShell gir en enkel måte å lese XML-filer, manipulere dem og til slutt å lagre dem tilbake til disk uten å skrive mye kode eller vite XPath. PowerShell gjør dette ved å gi brukeren dot notasjon for å betegne hver node I XML-dokumentet. Men først, la oss komme i gang med å lese ET XML-dokument.
En måte å lese ET XML-dokument I PowerShell er å skrive en variabel til typen . Hvis du vil opprette denne variabelen, kan Vi bruke Cmdleten Get-Content til å lese hele teksten I ET XML-dokument. Å typecast utgangen Av Get-Innhold kan vi bare prepend teksten før variabelen. Dette forteller PowerShell at vi trenger denne variable typecasted Som Et System.Xml.Xmldocument-typen i stedet for standard array-typen som normalt kommer fra Get-Content.
$XmlDocument = Få-Innhold-Bane C: Biler.xml
I denne artikkelen bruker VI EN XML-fil som heter Cars.xml som et eksempel, som inneholder ulike merker og modeller av biler.
når Du har kjørt Get-Content for å lese rå tekst FRA XML-dokumentet og kaste utdataene til type System.Xml.XmlDocument, har du nå en variabel kalt $XmlDocument som inneholder HELE XML-nodetreet som representerer dokumentet.
på dette punktet er lesing av dokumentet en triviell oppgave på grunn av den nevnte punktnotasjonen. Siden VI nå har XML-dokumentet i minnet, kan vi utforske treet.
Legg merke til hvordan vi kan komme dypere og dypere inn i dokumentet ved hjelp av punktnotasjon? Hvis vi treffer et sted i dokumentet som inneholder node av lignende type (Biler), kan vi behandle det som Et PowerShell-array og angi et indeksnummer for noden vi leter etter. I dette tilfellet finner vi den første bilen i dokumentet ved å angi indeksnummeret 0.
La oss si at du vil finne alle bilene i DETTE XML-dokumentet som har fire eller flere seter. Bare ved å bruke den vanlige PowerShell cmdleten Where-Object kan vi enkelt hente denne informasjonen.
Kombinere Noder
Legg Merke til At PowerShell kombinerer både noder (elementer) og XML-attributter alt i ett sett? Dette gjør at du enkelt kan gre gjennom dokumentet bare ved hjelp av dot notasjon og Where-Object cmdlet. PowerShell kjenner alle attributter og underelementer som er knyttet til hver overordnet XML og viser dem i en fin tabell for deg, som standard.
Vi har vist deg en metode som Du kan bruke til å lese XML-dokumenter med. En av de fine tingene Med PowerShell er at Det kan være så enkelt eller så vanskelig som du vil at den skal være. Vi har vist deg hvordan du finner noder i ET XML-dokument ved hjelp av punktnotasjon. Hvis du noen gang har behov for å gjøre mer avansert søk, foreslår vi at du ser på å bruke cmdlets som Select-Xml for å bygge kraftigere spørringer. Uansett Vil PowerShell tillate deg å lese og finne omtrent alt fra ET XML-dokument. Resten er opp til deg.