С учетом XML, подобного этому
<?xml version="1.0"?>
<Definitions>
<Products>
<Product_Group id="Revit">
<Product id="RVT2017">
<RSAccelerator>RSACCELERATOR2017</RSAccelerator>
<ShortcutPath os="6.0 6.1">C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Autodesk\Revit 2017</ShortcutPath>
<ShortcutPath os="6.2 6.3 10.0">C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Revit 2017</ShortcutPath>
</Product>
</Product_Group>
</Products>
</Definitions>
Я хочу проверить наличие атрибута ОС, чтобы можно было по-разному обрабатывать получение значения, когда есть два узла, дифференцированных по значению этого атрибута, без атрибута вообще.
Я бы подумал, что это сработает, с соответствующими значениями для двух переменных.
if ($script:pxResources.SelectNodes("//Product[@id='$product']/$resource[@os]")) {
Однако, это возвращает true, даже когда ни один узел не выбран.Я могу использовать
if ($script:pxResources.SelectNodes("//Product[@id='$product']/$resource[@os]").count -gt 0) {
, но это кажется неуклюжим.Есть ли лучший способ справиться с этим, или тестирование на пустой набор - единственный вариант?