Сбор данных из ответа NDFD SOAP - PullRequest
1 голос
/ 18 ноября 2008

Я написал небольшое приложение, которое извлекает данные из Национальной базы данных цифровых прогнозов NDFD и в настоящее время правильно получает ответ XML. Я заметил, что хотя я могу использовать инструмент WSDL2Java для создания интерфейса для запроса данных о погоде, когда я на самом деле использую интерфейс для получения данных о погоде, он возвращается в виде строки XML. Есть ли более чистый способ программно получать данные о погоде из полученного XML, кроме анализа? Например, есть ли доступные интерфейсы Java, чтобы я мог вызывать что-то вроде weatherData.getTemp () вместо прохождения через сам XML?

Обратите внимание, что я впервые использую SOAP, поэтому, если я что-то упускаю из виду, пожалуйста, дайте мне знать.

Обновление:
Вот wsdl , который я использую.

1 Ответ

0 голосов
/ 22 марта 2011

Предполагая, что:

  • вы используете Java

  • строка XML, возвращаемая при вызове операции веб-службы, соответствует схеме XML

тогда вы можете использовать XMLBeans :

  • начиная с XML-схемы, XMLBeans генерирует Java-классы, которые позволяют программно проходить и манипулировать совместимым XML

  • вы добавляете сгенерированные классы в ваш проект Java

  • когда вы получаете ответ от веб-службы, вы можете создать соответствующий объект XMLBean, проанализировав его

  • наконец, вы можете получить доступ к атрибутам XML (например, «temp») с помощью методов получения Java

Предполагая, что weatherData является сложным типом в XMLSchema, вы сможете получить что-то вроде

String xmlResponse = getWebServiceResponse();
YourXmlDocument doc = YourXmlDocument.Factory.parse(xmlResponse);
doc.getWeatherData().getTemp();

Предупреждение: это сильно зависит от того, как XML-схема структурирована, поэтому код может быть совершенно другим. Однако XMLBeans, как правило, очень прост в использовании.

Недостаток этого решения заключается в том, что если XML-схема изменяется, то вам придется заново создавать классы и перекомпилировать код. Надеемся, что это не должно происходить очень часто для стабильной XML-схемы.

...