как получить списки всех элементов из ответа soap

#powershell #soap #response

#powershell #soap #ответ

Вопрос:

У меня есть этот ответ SOAP

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:anow="http://tempuri.org/AnoWebservice" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header />
  <soapenv:Body>
    <anow:AnoWebserviceResponse>
      <anow:result>
        <resultCode>0</resultCode>
      </anow:result>
      <anow:response>
        <DataView>
          <ERROR_CODE>NOER</ERROR_CODE>
          <SYS_FORZA>N</SYS_FORZA>
          <A>
            <B>0</B>
            <V>2016-10-06</V>
          </A>
        </DataView>
      </anow:response>
    </anow:AnoWebserviceResponse>
  </soapenv:Body>
</soapenv:Envelope>
  

На самом деле для извлечения значения одного элемента, который я использую

 $value=Select-Xml -XPath $XPath -Xml $SOAPResponseFile -Namespace @{ "soapenv" = 'http://schemas.xmlsoap.org/soap/envelope/' ; "anow" = 'http://tempuri.org/AnoWebservice'}
  

Я хотел бы извлечь имя каждого элемента для каждого узла.
Это означает, что вывод должен быть таким:

 ERROR_CODE
SYS_FORZA
B
V
  

как я могу это сделать?

Заранее благодарю вас

С уважением

Клаудио

Ответ №1:

 $xpath = "//DataView//*"

Select-Xml -XPath $XPath -Xml $SOAPResponseFile -Namespace @{ "soapenv" = 'http://schemas.xmlsoap.org/soap/envelope/' ; "anow" = 'http://tempuri.org/AnoWebservice'} | foreach-object {$_.node.Name}
  

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

1. Спасибо @Bill Hurt, это работает! это именно то, что я искал 😉

2. Мой SOAPResponseFile пустой и типа xmldocument . Вот почему это не работает для меня?