PowerShell - извлекает все узлы XML с помощью значения атрибута - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь получить все узлы XML, где значение «Tag» атрибута равно «Fetch» ​​с XPath, без использования большого количества циклов с помощью PowerShell 5.1. Пожалуйста, помогите.

[xml] $XMLValue=@'
  <Root>
     <Child>
        <Parameter Tag="Fetch"><![CDATA["Data"]]></Parameter>
        <Parameter Tag="DontFetch"><![CDATA["Data"]]></Parameter>
     </Child>
     <Child>
        <Test>
           <Node Tag="Fetch"><![CDATA["Data"]]></Node>
           <Node Tag="DontFetch"><![CDATA["Data"]]></Node>
        </Test>
     </Child>
     <Child>
     <Test>
        <Test1>
           <Node1 Tag="Fetch"><![CDATA["Data"]]></Node1>
           <Node2 Tag="DontFetch"><![CDATA["Data"]]></Node2>
        </Test1>
     </Test>     
    </Child>
   </Root>
'@

Я пытался l oop в каждом элементе XML, используя XML метод "SelectNodes" и рекурсию, но это слишком много для управления глубиной. Так что есть Xpath для этого типа, если требуется, где я могу фильтровать узлы на основе значения атрибута.

Выход должен быть ниже 3 узлов

<Parameter Tag="Fetch"><![CDATA["Data"]]></Parameter>
<Node Tag="Fetch"><![CDATA["Data"]]></Node>
<Node1 Tag="Fetch"><![CDATA["Data"]]></Node1>
...