在 PowerShell 中对属性值进行 XPath 搜索

XPath search on an attribute value in PowerShell

尽管我在网上看到过这些示例,但似乎无法在 PowerShell 中对属性值进行 XPath 搜索。

[xml]$xml = '<a><b><c foo="bar"></c></b></a>'
$xml | select-xml -xpath //c[@foo]  # This returns a node
$xml | select-xml -xpath //c[@foo='bar'] # This does not

我从来没有被如此简单的事情难倒过。 :-) 我怎样才能让它工作?

如果你引用 xpath 它将正常工作:

[xml]$xml = '<a><b><c foo="bar"></c></b></a>'
$xml | select-xml -xpath "//c[@foo='bar']"

这可能是因为 @ is the splat operator,所以它试图 splat 一个名为 $foo.

的(不存在的)变量

其实这个解释是错误的。显然是因为单引号。

如果你试试这个:

Write-Host //c[@foo='bar']

你会看到输出是:

//c[@foo=bar]

这似乎是因为 PowerShell 连接字符串的方式。