尽管我在网上看到了一些例子,但似乎无法对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
我从来没有被如此简单的事情所困扰。 :-)我怎样才能让它工作?
答案 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如何连接字符串。