Vai niin, taas yksi nopea oppitunti XML:n etsimisestä.

Tällainen XML-solmu:

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

Käyttää nimeä attribuuttina. Kirjoitin juuri postauksen siitä, miten etsiä XML:ää solmun attribuutin perusteella.

Mutta siitä ei ole mitään hyötyä solmun varsinaista tekstiarvoa vastaan.

<server>DomainController1</server>

Täysin erilainen peto. Temppu tässä on käyttää metodia ”text()”.

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

Oh joo… Siinäpä se hyvä juttu.

Voit etsiä myös muutaman tason alempaa. Tässä on esimerkki Remote Desktop Connection Manager -tiedostosta.

<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>

Jos haluan saada GROUP-solmun, jossa on PALVELIN nimeltä DomainController1.myDomain.demo… Voin tehdä sen XPath:lla ja Select-XML:llä.

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

Näin haetaan ryhmään kuuluvan palvelimen nimi-solmua. Näetkö kuinka lähellä tuo on? Etkö jo opi?

Englanniksi tuo XPath-lause kääntyy seuraavasti: ”Anna minulle NAME-solmu, jonka tekstiarvo on DomainController1.MyDomain.demo, joka on ominaisuuksiksi kutsutun solmun childnode, joka on palvelimeksi kutsutun solmun childnode, joka on ryhmä-nimisen solmun childnode. AND, that group node could be anywhere in the XML.”

Määrittelemme sulkujen ulkopuolella solmun, jonka haluamme vastaanottaa. Määrittelemme sulkujen sisällä arvioinnit, joilla sinne päästään.

Koska haluan GROUP-solmun, aion tunkea kaiken muun sulkujen sisään.

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

Nyt tämä palauttaa group-solmun. Olet valmis kloonaamaan solmun, päivittämään attribuutteja tai lisäämään lapsisolmun ja sitten tallentamaan päivitetyn XML-objektin takaisin alkuperäiseen XML-tiedostoon.

Vastaa

Sähköpostiosoitettasi ei julkaista.