powershell-xml-xpath
In Powershell
angenommen ich habe folgende xml:
<Users>
<User Name="Foo">
<Friends>
<Friend Name="Bar"/>
</Friends>
</User>
<User Name="Foo2" />
<User Name="Foo3">
<Friends>
<Friend Name="Bar"/>
</Friends>
</User>
</Users>
Wie kann ich alle Benutzer, die eine "Bar", wie ein Freund?
(In diesem Beispiel wäre es " Foo " Foo3).
Sollte ich verwenden xpath?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe eine Vorliebe für die Verwendung von XPath in diesen Tagen. Ich habe laufen in Probleme mithilfe der PowerShell xml-adapter, die ärgerlich sind, wie der name Kollision auf
item
:In diesem Fall würde ich die XPath-als auch. @TomWij sofern die korrekten xpath.
Im Falle, dass der xpath-Ausdruck zu kompliziert wäre, würde ich sicher benutzt den 'klassischen' Ansatz.
(in diesem Fall, wenn Sie nicht über den script-Modus auf, es spielt keine Rolle, dass es keine
Friends
element.$_.Friends
zurück$null
und$null.Friend
zurück$null
so gut und so weiter. So endlich$null -eq 'Bar'
es wird false zurückgegeben und das element wird entfernt durch Where-Object)Ja, XPath wäre ausreichend für die!
Überprüfen Powershell testen Sie Ihre XPath zu sehen, wie es getan werden kann.
Select-Xml
aus V2. Es ist viel praktischer:Select-Xml -xml $xml -xpath '/Users/User[contains(./Friends/Friend/@Name, "Bar")]' | select -exp node