Weboldal keresés

PowerShell XML elemzés | Gyors áttekintés a PowerShell XML-elemzésről


Bevezetés a PowerShell XML-elemzésbe

A következő cikk a PowerShell XML elemzés vázlatát tartalmazza. Az XML-elemzés az a könyvtár vagy folyamat, amely az XML-dokumentumhoz való csatlakozáshoz és a dokumentum tartalmának olvasásához, adott XML-dokumentumok kiszűréséhez, a csomópontokhoz való navigáláshoz és az XML-dokumentum érvényesítéséhez szükséges. A PowerShell a Select-XML parancssort használja a dokumentum elemzéséhez. Az XPath (XML elérési út) módszert és egy másik, .Net metódusnak nevezett módszert használja az XML-dokumentum elemzésére az XML-dokumentumok keresésének és olvashatóságának megkönnyítése érdekében.

A PowerShell XML-elemzés szintaxisa

Az alábbiakban az említett szintaxis látható:

Select-Xml
[-Xml] <XmlNode[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
[-Path] <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
-LiteralPath <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
Select-Xml
-Content <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]

A fenti 4 különböző megemlíti, hogy egyszerre csak egy pár használható. Mint ahogy a -LiteralPath és a -Content paramétereket sem használhatjuk egyszerre. Ugyanabban a kombinációban használhatók, mint az említett.

Hogyan hajtsunk végre XML-elemzést a PowerShellben?

Mint tudjuk, az XML-elemzés az XML dokumentumokat, a szintaxist és a navigációs csomópontokat elemzi. Az XML a Select-XML parancssort vagy a .Net metódust használja hozzá.

Tegyük fel, hogy van egy minta XML-fájlunk az alábbiakban:

A minta XML fájl egy része az MS webhelyéről származik.

https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms762271(v=vs.85)

Kód:

<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description>
</book>
</catalog>

Az XML tartalommal való munkához először a tartalmat XML formátumban kell átadnunk. Ha az egyszerű Get-Content parancsot használjuk, akkor az nem tényleges XML formátumban lesz, hanem a nyers tartalomban.

Kód:

Get-Content C:\Temp\books.xml

Kimenet:

A Select-XML metódus vagy a DotNet metódus használatához a nyers fájlt XML formátumba kell konvertálnunk.

Kétféleképpen lehet egy fájlt XML-be konvertálni.

  • Típus Konverzió
$xmldoc = [xml](Get-Content C:\Temp\books.xml)
  • Add-Type módszerrel
$xml = New-Object -TypeName XML
$xml.Load('C:\Temp\books.xml')

Amikor a Select-XML metódust használjuk, az XPath kötelező.

A gyökércsomópont (katalógus) kiválasztása XPath használatával.

Kód:

Select-Xml -Xml $xml -XPath "/catalog"

Kimenet:

A másik módja a navigációnak a DotNet módszer használata.

Kód:

$xml.catalog
book
----
{book, book, book}

Példák a PowerShell XML elemzésre

Az alábbiakban felsoroljuk az említett példákat:

1. példa

Bontsa ki a gyökércsomópontot.

Select-XML metódussal a gyökér vagy az első szülőcsomópont (katalógus) kibontásához.

Kód:

$xmldoc = [xml](Get-Content C:\Temp\books.xml)
Select-Xml -Xml $xmldoc -XPath "/catalog"

Kimenet:

Miután megkaptuk a fenti kimenetet, ki kell bővítenünk a Node tulajdonságot.

Kód:

Select-Xml -Xml $xmldoc -XPath "/catalog" | Select -ExpandProperty Node

Kimenet:

2. példa

A SelectNodes metódus használatával.

A Select-XML metódus helyett a SelectNodes metódussal kereshetünk az XML fájlból.

Kód:

$xmldoc = [xml](Get-Content C:\Temp\books.xml)
$xmldoc.SelectNodes("/catalog")

Kimenet:

A fenti példában a „/” a gyökércsomópont kijelölését említi. A gyökércsomóponton csak a „Katalógus” csomópont áll rendelkezésre. Ha inkább a „Könyv” csomópontot használjuk, akkor nem ad ki semmilyen kimenetet, mert nem a gyökér szinten van.

Amikor a „//” szintaxist használjuk az xPath metódusban, akkor az a csomópontot a teljes dokumentumból választja ki, függetlenül attól, hogy hol vannak.

Kód:

PS C:\> $xmldoc.SelectNodes("//catalog")

Kimenet:

Ezzel megkeresi az összes katalógus csomópontot.

A fenti parancs hasonló a.

Kód:

Select-Xml -Xml $xmldoc -XPath "//catalog" | Select -ExpandProperty Node

És

Kód:

$xmldoc.catalog

Kimenet:

Az összes könyv kiválasztása az XML fájlból.

Kód:

$xmldoc.SelectNodes("//book")

Kimenet:

Hasonló parancsok

Kód:

Select-Xml -Xml $xmldoc -XPath "//book" | Select -ExpandProperty Node

És

Kód:

$xmldoc.catalog.book

Az összes szerző kiválasztása a fájlból.

Kód:

$xmldoc.SelectNodes("//author")

Kimenet:

Hasonló parancsok

Kód:

Select-Xml -Xml $xmldoc -XPath "//author" | Select -ExpandProperty Node

És

Kód:

$xmldoc.catalog.Book.author

Kimenet:

3. példa

SelectSingleNode metódus használata.

A SelectSingleNode módszer az adott csomópont kimenetének lekérése. Alapértelmezés szerint ez a parancs az első kimenetet választja ki a tömbből, ha az index nincs megemlítve, és az index 1-től kezdődik XML-ben.

Kód:

$xmldoc.SelectSingleNode('//book')

Kimenet:

Ez a parancs hasonló ahhoz,

Kód:

$xmldoc.SelectSingleNode('//book[1]')

Vagy

Select-Xml -Xml $xmldoc -XPath "//book[1]" | Select -ExpandProperty Node

Vagy

$xmldoc.catalog.book[1]
  • Másik csomópont kiválasztása:

Tegyük fel, hogy a második könyv szerzőjét akarjuk kiválasztani, használhatjuk az alábbi példát.

Kód:

$xmldoc.SelectSingleNode("//book[2]/author")
Select-Xml -Xml $xmldoc -XPath "//book[2]/author"

Kimenet:

Alternatív parancsok

Kód:

$xmldoc.catalog.book[2].author

Vagy

Select-Xml -Xml $xmldoc -XPath "//book[2]/author" | Select -ExpandProperty Node

Kimenet:

4. példa

Egy adott attribútum kiválasztása.

Ebben a példában egy adott attribútumot fogunk kiválasztani. Itt kell kiválasztanunk azt a csomópontot, amelynek könyvazonosítója: bk103.

Kód:

$xmldoc.SelectNodes( "//book[@id='bk103']" )

Kimenet:

Használhatja a Select-XML és a dotnet metódus alternatív parancsait is, az alábbiak szerint.

Kód:

Select-Xml -Xml $xmldoc -XPath("//book[@id='bk103']") | Select -ExpandProperty Node

Vagy

$xmldoc.catalog.book | where {$_.id -eq 'bk103'}

Kimenet:

5. példa

Több elem kiválasztása.

Több elem kiválasztásához használhatjuk az alábbi parancsot.

Kód:

$xmldoc.SelectNodes("//book/title | //book/author")

Vagy

$xmldoc.SelectNodes("//title | //author")

A fenti parancs kiválasztja a címet és a szerzőt az XML fájlból.

Kimenet:

Hasonló parancsok

Kód:

Select-Xml -Xml $xmldoc -XPath ("//title | //author") | Select -ExpandProperty Node
$xmldoc.catalog.book | Select Title, Author

Kimenet:

6. példa

Egy- és kétpontos szintaxis Xpath.

Az XPath szintaxisban a pont (.) az aktuális csomópontot, míg a dupla pont (..) az aktuális csomópont szülőjét jelöli.

Kód:

$xmldoc.SelectSingleNode("//catalog/.")

Kimenet:

A fenti példa az aktuális csomópontot ábrázolja.

Kód:

$xmldoc.SelectSingleNode("//catalog/..")

Kimenet:

A fenti példa a szülőcsomópontot ábrázolja.

Következtetés

A PowerShell XML elemzési módszerek hasznosak az XML dokumentumokkal való munka során, így az alkalmazásban történő használat után az alkalmazások könnyebben kereshetnek és gyorsan navigálhatnak a nagyobb dokumentumok között, valamint nagyon gyors a webes feldolgozás során.

Kapcsolódó cikkek