Még egy gyors lecke az XML kereséséről.

Egy ilyen XML-csomópont:

<server name="DomainController1"></server>

A nevet használja attribútumként. Épp most írtam egy bejegyzést arról, hogyan keressük az XML-t a csomópont attribútuma alapján.

De ez semmit sem ér a csomópont tényleges szövegértékével szemben.

<server>DomainController1</server>

Teljesen más fenevad. A trükk itt a “text()” módszer használata.

$XML | Select-Xml -Xpath '//server'

Ó, igen… Ez a jó dolog.

Egy pár szinttel lejjebb is kereshetsz. Íme egy minta egy Távoli asztali kapcsolatkezelő fájlból.

<group> <properties> <expanded>True</expanded> <name>DomainControllers</name> </properties> <logonCredentials inherit="None"> <profileName scope="File">myDomain\myAccount</profileName> </logonCredentials> <server> <properties> <name>DomainController1.myDomain.demo</name> </properties> </server></group>

Ha azt a GROUP csomópontot akarom megszerezni, amelyben a DomainController1.myDomain.demo nevű SERVER szerepel… Ezt XPath és Select-XML segítségével tehetem meg.

#This isn't exactly it, but it's a learning step to help you better understand.$xml | Select-XML -XPath '//group/server/properties/name'

Így kapom meg a csoportban lévő szerver név csomópontját. Látod milyen közel van ez? Nem tanulsz már?”

Magyarul ez az XPath utasítás így fordítható: “Add meg nekem a NAME csomópontot, amelynek szövegértéke DomainController1.MyDomain.demo, amely a properties nevű csomópont gyermekcsomópontja, amely a server nevű csomópont gyermeke, amely a group nevű csomópont gyermeke. AND, that group node could be anywhere in the XML.”

A zárójelen kívül definiáljuk azt a csomópontot, amelyet meg akarunk kapni. A zárójelen belül definiáljuk az oda vezető kiértékeléseket.

Mivel a GROUP csomópontot akarom, minden mást a zárójelek közé tömök.

$xml | Select-XML -XPath '//group'

Most ez adja vissza a group csomópontot. Készen áll a csomópont klónozására, az attribútumok frissítésére vagy egy gyermekcsomópont beszúrására, majd a frissített XML-objektum mentésére vissza az eredeti XML-fájlba.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.