#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
. Вот почему это не работает для меня?