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.xmlKimenet:
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 NodeKimenet:
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.catalogKimenet:
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.bookAz ö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.authorKimenet:
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 NodeVagy
$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].authorVagy
Select-Xml -Xml $xmldoc -XPath "//book[2]/author" | Select -ExpandProperty NodeKimenet:
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 NodeVagy
$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, AuthorKimenet:
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.




















