Powershell XML Parsen funktioniert nicht auf Unterknoten
Ich bin tring, um eine Analyse der folgenden Datei:
<?xml version="1.0" encoding="UTF-8" ?>
<printDrivers>
<printDriver id="XE8550">
<inf>x28550p.inf</inf>
<driverPath>\drivers\XEROX\8550\8550_Driver</driverPath>
<printerPaths>
<printerPath>\\print-man\man-25</printerPath>
</printerPaths>
</printDriver>
<printDriver id="HP4050TN">
<inf>hpbf002i.inf</inf>
<driverPath>\drivers\HP\LaserJet\LaserJet_4050_PCL6</driverPath>
<printerPaths>
<printerPath>\\print-man\man-8</printerPath>
<printerPath>\\print-man\man-14</printerPath>
</printerPaths>
</printDriver>
</printDrivers>
mit dem folgenden powershell-Skript:
$nodelist = $xd.selectnodes("/printDrivers/printDriver") # XPath is case sensitive
foreach ($printerDriverNode in $nodelist) {
$XMLid = $printerDriverNode.getAttribute("id")
$XMLinf = $printerDriverNode.selectSingleNode("inf").get_innerXml()
$XMLdriverPath = $printerDriverNode.selectSingleNode("driverPath").get_innerXml()
$printerPathNodeList = $printerDriverNode.selectNodes("printerPaths/printerPath")
foreach ($printerPathNode in $printerPathNodeList) {
$XMLprinterPath = $printerPathNode.selectSingleNode("printerPath").get_innerXml()
}
}
Alles funktioniert gut, außer für die "nested" - Knoten. Wenn ich das Skript ausführen es wird nur die erste . d.h. es wird nicht \drucken-der Mensch\der Mensch-14, nur \drucken-der Mensch\der Mensch-8.
Wie bekomme ich es zurück zu bringen alle Knoten?
Dank,
Ben
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist schon der Iteration über die
printerPaths/printerPath
Knoten hier - keine Notwendigkeit zu tun, eine andere.selectsinglenode
auf, dass<printerPath>
Knoten - Lesen Sie einfach die.InnerXml
oder.InnerText
aus, dass$printerPathNode
- das sollten Sie sich die Werte, die Sie suchenDass zu erwarten ist, sind Sie der Zuweisung die gleiche variable ($XMLprinterPath) mehrere Male, so dass der zweite Wert überschreibt den ersten. Hast du gedacht, um zu verwenden, die als ein array oder eine Liste?
Wenn Sie PowerShell V2.0 vorhanden ist, können Sie
Select-Xml
die Objekte generiert, für die Sie on-the-fly:Ich vermute, Sie versuchen zu glätten, die XML in Objekte
Haben Sie bereits die Knoten, so einfach ist es 🙂
Beachten Sie, dass es möglich ist, Zugriff auf xml-Objekte wie.