@aydinka

Получение значений в XML через XPath, не могу из-за namespace. Как быть?

Всем Привет!

Имею следующий XML, который получаю от веб-сервиса

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetailsResponse xmlns="http://warehouse.example.com/ws">
       <getProductDetailsResult>
         <productID>12345</productID>
         <productName>Стакан граненый</productName>
         <description>Стакан граненый. 250 мл.</description>
         <price>9.95</price>
         <currency>
             <code>840</code>
             <alpha3>USD</alpha3>
             <sign>$</sign>
             <name>US dollar</name>
             <accuracy>2</accuracy>
         </currency>
         <inStock>true</inStock>
       </getProductDetailsResult>
     </getProductDetailsResponse>
   </soap:Body>
</soap:Envelope>


Если убрать namespace - xmlns="warehouse.example.com/ws", то могу получить все значения. Например значения тега price

XPath -
/soap:Envelope/soap:Body/getProductDetailsResponse/getProductDetailsResult/price/text()


А вот с namespace никак не могу, как быть?
  • Вопрос задан
  • 621 просмотр
Пригласить эксперта
Ответы на вопрос 2
wellusion
@wellusion
Используйте local-name()
Например, так: //*[local-name()='price']
Ответ написан
Комментировать
@aydinka Автор вопроса
Уже нашел ответ на свой вопрос

Не использовать namespaces в возрасте XML или съедать их
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы