Mer XML med PowerShell

eworder.xml).

Skärmdumpen ovan visar resultatet av att klippa ut och klistra in det här skriptet i PowerShells konsol. En av de användbara sakerna med att göra detta är att du kan undersöka de enskilda elementen som användes för att uppdatera dokumentet.

Om du skriver $ol i PowerShells konsol visas den nya orderraden som lagts till i ordern och, som jag visade i förra månadens kolumn, är underelementen i denna orderrad direkt adresserbara: $ol.ItemID ger artikelnumret, medan $ol. NumberOrdered anger antalet beställda artiklar enligt följande:

PSH [D:foo]: $ol.itemid

876543

PSH [D:foo]: $ol.numberordered

21

PSH [D:foo]:

PowerShell-gemenskapstillägg

En av de mest kraftfulla aspekterna av PowerShell är hur communityn kan lägga till komponenterna som levereras av Microsoft. Du kan skriva dina egna tillägg eller använda de som redan skapats av några av de riktigt smarta PowerShell-gurusna. Du kan ladda ner dessa från CodePlex på http://tinyurl.com/ywk28h.

En av de trevligare cmdletarna i Community Extensions är Format-XML cmdlet. Du kan använda den här cmdleten för att visa XML som vi byggde ovan, enligt följande:

PSH [D:foo]: $ol.get_outerxml()

876543 Osynliga widgets 21 321

.12

PSH [D:foo]:

PSH [D:foo]: format-xml -ingång ($ol.get_outerxml())

876543

Osynliga widgets

21

321,12

PSH [D:foo]:

PSH [D:foo]: $ol.get_innerxml()

876543 Osynliga widgets 21 321,12

PSH [D:foo]:

PSH [D:foo]: format-xml -input ($ol.get_innerxml())

876543

Osynliga widgets

21

321,12

PSH [D:foo]:

Som du kan se gör att du skriver $ol.get_outerXML() att PowerShell visar hela XML för den nyligen tillagda beställningsraden, medan $ol.get_innerXML() får den inre XML, och genom att även använda format-XML cmdleten kan du undersök den fullständiga yttre och inre XML för denna nyskapade orderrad i korrekt indragen form.

En annan användbar cmdlet i Community Extensions-paketet är Test-XML cmdlet, som testar en XML-fil för giltighet och kan valfritt validera ett dokument mot ett namngivet XML-schema. Test-XML utför en grundläggande uppsättning tester, returnerar en enkel sann om XML är välformaterad (och valfritt validerar mot schemat), eller falsk om inte. Du kan använda växeln Verbose när du anropar Test-XML för att rapportera om eventuella fel som hittats.

Som nämnts på Community Extensions-webbplatsen är denna Test-XML-cmdlet fortfarande under utveckling, men den har säkert redan ett antal fel.

XML-läsare i PowerShell

I exemplen jag har visat hittills har det varit okomplicerat att ladda XML-filen med DOM (Document Object Model)-metoden, och det möjliggör enkel kodning. Det finns dock en nackdel med att göra saker på DOM-sättet – det är inte särskilt effektivt. Med DOM måste PowerShell först ladda hela filen i minnet och sedan skapa ett XML-dokument som representerar hela filen, komplett med overheaden för XML DOM-formatet.

En mycket effektivare metod för att bearbeta XML-dokument är att använda klassen XML Reader, som strömmar genom dokumentet ett element i taget istället för att ladda det hela i minnet på en gång. Här är ett enkelt exempel med klassen som heter loop-xml:

Lämna en kommentar

Din e-postadress kommer inte publiceras.