Extensible Markup Language (XML) je formát prostého textu, který se používá k ukládání strukturovaných dat. XML je napsáno tak, aby bylo čitelné jak pro člověka, tak pro stroj.
Dokumenty XML často začínají deklarací, jak je znázorněno zde:
<?xml version="1.0" encoding="utf-8"?>
Select-Xml příkaz lze použít k prohledávání dokumentů XML pomocí dotazovacího jazyka XPath. PowerShell v3 a novější také obsahují rutinu Select-Xml. Tato rutina je navržena k vyhledání textu v řetězci XML nebo v dokumentu XML. Konkrétně je navržen tak, aby spouštěl dotazy XPath.
V tomto tutoriálu Powershell o XML budeme diskutovat o tom, jak prohledávat XML a extrahovat konkrétní uzly hledáním atributů XML. K tomu použijeme rutinu select-Xml, avšak dotaz XPath by byl na úrovni atributu. Pomocí příkladů uvedených v tomto tutoriálu byste měli být schopni snadno dotazovat data XML v Powershell a používat výstupní hodnoty.
1. Vstup XML s atributy
Pro tento kurz použijte následující vstupní XML:
<Details> <department count="10"> <ID>10</ID> <dname>Administration</dname> <manager>200</manager> <location>1700</location> <revenue>77</revenue> </department> <department count="20"> <ID>20</ID> <dname>Marketing</dname> <manager>201</manager> <location>1800</location> <revenue>50</revenue> </department> </Details>
2. Načtěte XML v PowerShell
Načteme XML přímo v PowerShellu, jak je znázorněno na obrázku níže:
PS C:\> $xml_attributes=@" >> <Details> >> <department count="10"> >> <ID>10</ID> >> <dname>Administration</dname> >> <manager>200</manager> >> <location>1700</location> >> <revenue>77</revenue> >> </department> >> <department count="20"> >> <ID>20</ID> >> <dname>Marketing</dname> >> <manager>201</manager> >> <location>1800</location> >> <revenue>50</revenue> >> </department> >> </Details> >> "@ >> PS C:\>
Proměnná xml_attributes obsahuje data XML, která můžeme prohledávat pomocí cmdlet select-Xml.
3. Prohledávejte XML podle atributů v prostředí PowerShell – XPath
Chcete-li uvést všechny hodnoty atributu „count“ jako příklad, můžete to udělat podle příkazu níže.
C:\>powershell Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:\> Select-Xml -Content $xml_attributes -XPath '//@count' | foreach {$_.node } #text ----- 10 20
Zde používáme „//“ k přímému dotazu na atribut XML a pomocí příkazu „foreach“ vytiskneme hodnotu v Powershell.
4. Vypsat uzly XML odpovídající hodnotě atributu – příklad
V tomto případě je požadavkem vypsat všechny detaily oddělení, kde se počet shoduje s 10. To lze snadno provést přiřazením hodnoty atributu k 10 v XPath a vytištěním výstupu. Příkaz Powershell k tomu je uveden níže:
PS C:\> Select-Xml -Content $xml_attributes -XPath '//department[@count="10"]' | foreach {$_.node} count : 10 ID : 10 dname : Administration manager : 200 location : 1700 revenue : 77
Shrnutí
S XML je snadné pracovat. Lze jej použít pro konfiguraci a ukládání dat. Viděli jste, jak ručně nastavit počáteční dokument, načíst jej do shellu a vyjmenovat jeho prvky. XPath lze použít k navigaci nebo prohledávání dokumentu XML. PowerShell (a .NET) používá XPath 1.0.