Viac XML s PowerShell

eworder.xml).

Snímka obrazovky vyššie zobrazuje výsledok vystrihnutia a vloženia tohto skriptu do konzoly PowerShell. Jednou z užitočných vecí na tom je, že môžete preskúmať jednotlivé prvky, ktoré boli použité na aktualizáciu dokumentu.

Zadaním $ol do konzoly PowerShell sa zobrazí nový riadok objednávky pridaný do objednávky a ako som ukázal v stĺpci minulého mesiaca, podprvky tohto riadku objednávky sú priamo adresovateľné: $ol. ItemID udáva číslo dielu, zatiaľ čo $ol. NumberOrdered udáva počet objednaných položiek takto:

PSH [D: foo]: $ol.itemid

876543

PSH [D: foo]: $ol.číslo objednané

21

PSH [D: foo]:

PowerShell Community Extensions

Jedným z najsilnejších aspektov PowerShell je spôsob, akým môže komunita pridávať komponenty dodávané spoločnosťou Microsoft. Môžete si napísať svoje vlastné rozšírenia alebo použiť tie, ktoré už vytvorili niektorí z naozaj inteligentných guru PowerShell. Môžete si ich stiahnuť z CodePlex na adrese http://tinyurl.com/ywk28h.

Jedným z najkrajších cmdletov v komunitných rozšíreniach je cmdlet Format-XML. Tento cmdlet môžete použiť na zobrazenie XML, ktorý sme vytvorili vyššie, takto:

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

876543Neviditeľné widgety21321

.12

PSH [D: foo]:

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

876543

Neviditeľné widgety

21

321.12

PSH [D: foo]:

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

876543Neviditeľné widgety21321.12

PSH [D: foo]:

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

876543

Neviditeľné widgety

21

321.12

PSH [D: foo]:

Ako vidíte, zadanie $ol.get_outerXML() spôsobí, že PowerShell zobrazí úplný XML pre novo pridaný riadok objednávky, zatiaľ čo $ol.get_innerXML() získa vnútorné XML a tiež použitím rutiny cmdlet Format-XML môžete preskúmať úplný vonkajší a vnútorný XML pre tento novovytvorený riadok objednávky v správne odsadených formulár.

Ďalšou užitočnou rutinou cmdlet v balíku Community Extensions je rutina cmdlet Test-XML, ktorá testuje platnosť súboru XML a môže voliteľne overiť dokument podľa pomenovanej schémy XML. Test-XML vykonáva základnú sadu testov, pričom vracia jednoduchú hodnotu true, ak je XML správne vytvorený (a voliteľne overuje voči schéme), alebo vracia hodnotu false, ak nie. Pri volaní Test-XML môžete použiť prepínač Verbose na hlásenie všetkých nájdených chýb.

Ako je uvedené na stránke Community Extensions, táto rutina cmdlet Test-XML je stále vo vývoji, ale určite už zachytáva množstvo chýb.

Čítačky XML v prostredí PowerShell

V príkladoch, ktoré som doteraz ukázal, bolo načítanie súboru XML pomocou metódy DOM (Document Object Model) jednoduché a umožňuje jednoduché kódovanie. Robiť veci spôsobom DOM má však aj nevýhodu – nie je to obzvlášť efektívne. S DOM musí PowerShell najprv načítať celý súbor do pamäte a potom vytvoriť dokument XML predstavujúci celý súbor, doplnený o réžiu formátu XML DOM.

Oveľa efektívnejšou metódou spracovania dokumentov XML je použitie triedy XML Reader, ktorá prúdi cez dokument jeden prvok po druhom namiesto toho, aby sa celá vec načítala do pamäte jedným ťahom. Tu je jednoduchý príklad s použitím triedy s názvom loop-xml: