выражение xpath для получения пространства имен uri - PullRequest
0 голосов
/ 14 сентября 2018

Я хотел бы извлечь пространство имен "output-element" (-> http://Customer_LIB/bo/getCustomer/v1) следующего xml:

<?xml version="1.0" encoding="UTF-8"?>
<result xsi:type="cu:getCustomerResponseMsg" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cu="wsdl.http://Customer_LIB/Customer" xmlns:cu_1="http://Customer_LIB/Customer" xmlns:v1="http://Customer_LIB/bo/getCustomer/v1">
 <cu_1:getCustomerResponse>
    <output xsi:type="v1:GetCustomerResponse">
      <firstName>Hans</firstName>
      <lastName>Moser</lastName>
    </output>
  </cu_1:getCustomerResponse>
</result>

У кого-нибудь есть идея? Я уже пробовал разные выражения. Пожалуйста, учтите, что я могу использовать только Xpath 1.0 для извлечения. Большое спасибо заранее.

Было бы также достаточно иметь выражение xpath 1.0, чтобы проверить, используется ли пространство имен "http://Customer_LIB/bo/getCustomer/v1" в xml.

1 Ответ

0 голосов
/ 14 сентября 2018

Используйте это:

xmlstarlet sel -t -v '//result/namespace::*[2]' file

или

xmlstarlet sel -t -v '//result/namespace::*[contains(name(), "v1")]' file

Выход

http://Customer_LIB/bo/getCustomer/v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...