Wählen Sie die XML-Knoten aus einem namespace mithilfe von Powershell
Ich habe Folgendes xml:
<?xml version="1.0" encoding="utf-8"?>
<userSettings>
<setting name="TelephonyServerHost">
<value>sipserver.domain.local</value>
</setting>
<setting name="SipServerFqdn">
<value>sipserver.domain.local</value>
</setting>
<setting name="WebServicesHost">
<value>websvc.domain.local</value>
</setting>
<setting name="KMSettings">
<value>
<KMIndexSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AutoIndexEnabled>false</AutoIndexEnabled>
</KMIndexSettings>
</value>
</setting>
</userSettings>
Bin ich in der Lage zum abrufen der Werte, die der Einstellung der Elemente durch xpath-aber ich kann nicht herausfinden, die richtige syntax für das Abfragen der AutoIndexEnabled element mit dem namespace.
Dieser funktioniert wie erwartet für das Lesen der KMSettings oder anderen Knoten, die nicht über ein namespace:
$xml = New-Object -TypeName 'System.XML.XMLDocument'
$xml.Load($xmlFilePath)
$node = $xml.SelectSingleNode("//userSettings/setting[@name='KMSettings']")
Aber ich kann nicht herausfinden, die syntax, wie für die Abfrage der AutoIndexEnabled element.
- Ich bin kein PowerShell-Benutzer, also nicht in der Lage sein zu helfen, mit der PowerShell bestimmte syntax, aber in Bezug auf die xml, die AutoIndexEnabled element ist innerhalb des xsi-namespace, deshalb sollten Sie PowerShell verwenden, die Möglichkeiten für den Zugriff auf den namespace und anschließend den Knoten in diesem namespace. Nach einer kurzen recherche habe ich gefunden diese Antwort, die aussieht wie passt Ihr Problem
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verstehe ich nicht das problem. Die namespaces, spielt keine Rolle hier, weil Ihre xml-Probe nicht enthalten Präfix-Elemente oder ein Standard-namespace. Zugreifen kann man auf das element wie diesem:
oder
Ausgabe:
Innerhalb der PowerShell können Sie den Zugriff auf XML-Knoten wie Eigenschaften, so dass diese funktioniert:
Und hier ist eine funktionierende XPATH-Lösung:
Ich in diesem bestimmten Beispiel, wie würden Sie wählen den Wert des Attributs mit dem Namen "xmlns:xsi"?
Ich würde erwarten, um die Ausgabe zu sehen: "http://www.w3.org/2001/XMLSchema-instance"
Dies ist, was ich versuche.Der Doppelpunkt ist das werfen aus meinem Skript. Ich bekomme die folgende Fehlermeldung: "Unerwartetes token ':id' in expression oder Anweisung."