Как извлечь значение узла xml в переменную powershell? - PullRequest
0 голосов
/ 25 марта 2019

Я работаю над созданием сценария оболочки Power, который читает файл XML и извлекает значения из узлов для дальнейших вычислений. Как я могу извлечь значения узлов в переменные?

Я написал код, используя XMLDOC в PS для чтения файла и извлечения значений в Power shell. Я могу получить значение атрибута одного узла. Я не могу извлечь значение узла, у которого тоже есть атрибуты, и есть многократное вхождение узла.

test.xml

<abc>
  <body>
    <Rows Count="02">
      <Row>
        <a ID="1">Name1</a>
        <a ID="2">Naresh</a>
        <a ID="3">Arvind</a>
      </Row>
      <Row>
        <a ID="1">Name2</a>
        <a ID="2">Sathish</a>
        <a ID="3">Kannan</a>
      </Row>
    </Rows>
  </body>
  <abc>

код

   [xml]$XmlDocument = Get-Content E:\Desktop\Test.xml 
   $nodes = $XmlDocument.SelectNodes('//Rows') 
   $A = $nodes.GetAttribute("count")  

   if ($A -eq '02')
    {
     $B = $XmlDocument.abc.Body.Rows.ROW.a | Where-Object {$_.ID -eq '2'}
    }

Ожидаемый результат

Переменная A должна получить «02» (только значение) и «Naresh», «Sathish» (только значения) должны храниться в 2 разных переменных

Фактический результат

Переменная A получает "02" - она ​​работает «Naresh» и «Sathish» хранятся в переменной B, но хранятся с идентификаторами и заголовками.

1 Ответ

1 голос
/ 25 марта 2019
[xml] $str = @'
<abc>
  <body>
    <Rows Count="02">
      <Row>
        <a ID="1">Name1</a>
        <a ID="2">Naresh</a>
        <a ID="3">Arvind</a>
      </Row>
      <Row>
        <a ID="1">Name2</a>
        <a ID="2">Sathish</a>
        <a ID="3">Kannan</a>
      </Row>
    </Rows>
  </body>
  </abc>
'@


$a = $str.abc.body.Rows.Row.a | Where-Object {$_.ID -eq '2'} | Select-Object -ExpandProperty '#text'

Используйте свойство Select-Object, и у вас будет только Naresh & Sathish на выходе.

enter image description here

...