Как разобрать данные из сообщения ответа SOAP в Java - PullRequest
1 голос
/ 17 июня 2011

Я использую Dom4j для разбора SOAP-сообщения. У меня была проблема:
Node node = document.selectSingleNode ("/ * / soapenv: Envelope / soapenv: Body / ns: addResponse");
Когда я использую вышеупомянутый XPath, я получил следующее исключение:
Исключение: выражение XPath использует префикс несвязанного пространства имен ns1.
Я нашел способ сделать это: удалить пространство имен, что не рекомендуется.
Любая помощь будет оценена. Спасибо
Кстати, есть ли лучший способ или инструментарий для этой работы?

1 Ответ

1 голос
/ 19 июня 2011

Вам необходимо создать объект org.dom4j.XPath и прикрепить к нему подходящие привязки пространства имен.Примерно так:

XPath xpath = document.createXPath("/*/soapenv:Envelope/soapenv:Body/ns:addResponse");
Map<String, String> nsb = new HashMap<String, String>();
nsb.put("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
nsb.put("ns", ".....");
Node node = xpath.selectSingleNode(document);

Есть ли лучший способ?Что ж, в наши дни есть JAX-WS, и если для вашего сервиса доступен WSDL, обычно очень просто сгенерировать интерфейсы и классы Java для него.

...