Как извлечь данные из ответа SOAP в Java?

У меня есть клиент, настроенный для отправки запроса на SOAP-сервер Национальной метеорологической службы. Я получаю ожидаемый ответ, но не уверен, как лучше всего извлечь из него нужные мне данные.

Например, в XML (в SOAPBody) есть много дополнительных данных, но я хочу получить данные только для параметров, которые я установил (таких как температура) для моего POJO.

Каков наилучший способ извлечь эти данные?


person thedude19    schedule 23.09.2009    source источник
comment
какой код вы используете для вызова SOAP?   -  person tster    schedule 24.09.2009


Ответы (2)


Я начал пытаться использовать веб-службы SOAP вручную, как вы описываете - есть лучшие способы.

Существуют библиотеки, которые сделают всю работу за вас — не нужно ничего разбирать вручную.

Ознакомьтесь с JAX-WS. Большинство современных IDE (конечно, Netbeans и Eclipse) также предоставляет поддержку «укажи и щелкни» для создания клиентов веб-сервисов. с учетом WSDL.

Самая большая потенциальная проблема на этом пути — если WSDL отсутствует или WSDL неправильный, и в этом случае инструменты, которые я связал, могут испытывать трудности.

Следующим самым безопасным способом было бы использовать синтаксический анализатор XML, такой как JAXP SAX & DOM и т. Д. (Они прямо в вашей JRE), чтобы проанализировать ответ, а затем пройтись по задействованным структурам данных.

Наконец, вы можете пойти по пути взлома строк, используя разбиения или регулярные выражения, но на этом пути таится много потенциальной боли — спецификация XML — это нечто большее, чем вложенные теги.

person brabster    schedule 23.09.2009

Настоятельно рекомендуется не пытаться декодировать SOAP вручную :)

Просто чтобы расширить то, что сказал @Brabster, Netbeans имеет обширную поддержку веб-служб, особенно с использованием библиотеки JAX-WS.

http://www.netbeans.org/kb/60/websvc/jax-ws.html#Exercise_3_1

person UberAlex    schedule 23.09.2009