2016-03-28 3 views
1

Несмотря на примеры, которые я видел в Интернете, не представляется возможным выполнить поиск XPath по значению атрибута в PowerShell.Поиск XPath по значению атрибута в PowerShell

[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

Если вы цитируете 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 конкатенацию строк.

Смежные вопросы