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.