从NDFD SOAP响应中收集数据

时间:2008-11-18 04:25:26

标签: xml soap wsdl

我编写了一个小应用程序,用于从国家数字预测数据库NDFD检索数据,目前正在正确接收XML响应。我注意到虽然我可以使用WSDL2Java工具来创建接口以请求天气数据,但当我实际使用接口获取天气数据时,它将作为XML字符串返回。除了解析它之外,是否有更简洁的方法以编程方式从生成的XML中获取天气数据?例如,是否有可用的Java接口,以便我可以调用类似weatherData.getTemp()的内容而不是遍历XML本身?

请注意,这是我第一次使用SOAP,所以如果有什么东西我很明显可以忽略,请告诉我。

更新:
这是我正在使用的wsdl

1 个答案:

答案 0 :(得分:0)

假设:

  • 你使用java

  • 调用Web服务操作返回的XML字符串符合XML Schema

然后您可以使用XMLBeans

  • 从XML Schema开始,XMLBeans生成java类,允许您以编程方式遍历和操作兼容的XML

  • 将生成的类添加到java项目

  • 当您从Web服务获得响应时,可以通过解析来构造相应的XMLBean对象

  • 最后,您可以使用java getters访问XML属性(例如“temp”)

假设weatherData是XMLSchema中的复杂类型,那么您将能够像

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

警告:这在很大程度上取决于XML Schema的结构,因此代码可能完全不同。但是,XMLBeans通常很容易使用。

此解决方案的一个缺点是,如果XML Schema发生更改,则必须重新生成类,然后重新编译代码。希望对于稳定的XML Schema来说,这不应该经常发生。