Как извлечь значение xml node в переменную в powershell?

#xml #powershell #powershell-2.0 #powershell-3.0 #powershell-4.0

#xml #powershell #powershell-2.0 #powershell-3.0 #powershell-4.0

Вопрос:

Я работаю над созданием скрипта Power shell, который считывает 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:DesktopTest.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:

 [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.

введите описание изображения здесь

Комментарии:

1. Можем ли мы извлечь «Naresh» и «Sathish» из двух разных переменных? $ A = Naresh $ B = Sathish Можем ли мы использовать where-object для первых полей?

2. Я использовал массив для разделения значений на две переменные