XPath搜索PowerShell中的属性值

时间:2016-03-28 14:50:45

标签: powershell xpath powershell-v4.0

尽管我在网上看到了一些例子,但似乎无法对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

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

1 个答案:

答案 0 :(得分:1)

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

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

这可能是因为@ is the splat operator,所以它试图展开一个名为$foo的(不存在的)变量。

实际上这种解释是错误的。这显然是因为单引号。

如果您尝试这样做:

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

你会看到输出是:

//c[@foo=bar]

这似乎是因为PowerShell如何连接字符串。