Получение элементов с пространством имен по умолчанию (без префикса пространства имен) с использованием XPath
В этом файле SOAP XML, как я могу получить 7
на использование запроса XPath?
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<HelloWorldResponse xmlns="http://tempuri.org/">
<HelloWorldResult>7</HelloWorldResult>
</HelloWorldResponse>
</soap:Body>
</soap:Envelope>
Этот запрос XPath не работает //*[name () ='soap:Body']
,
1 ответ
Если у вас установлен префикс пространства имен, вы можете использовать его, например:
//soap:Body
Но поскольку узлы, которые вы пытаетесь получить, используют пространство имен по умолчанию, без префикса, используя обычный XPath, вы можете получить доступ к ним только с помощью local-name()
а также namespace-uri()
атрибутов. Примеры:
//*[local-name()="HelloWorldResult"]/text()
Или же:
//*[local-name()="HelloWorldResult" and namespace-uri()='http://tempuri.org/']/text()
Или же:
//*[local-name()="HelloWorldResponse" and namespace-uri()='http://tempuri.org/']/*[local-name()="HelloWorldResult"]/text()
На ваш xml все они будут давать одинаковый результат, текст 7
,