2008-11-18 50 views
1

我写了一个小应用程序,它从国家数字预测数据库NDFD中检索数据,并且正在正确接收XML响应。我注意到,尽管我可以使用WSDL2Java工具来创建接口以请求天气数据,但是当我实际使用接口获取天气数据时,它将作为XML字符串返回。有没有更清晰的方式来编程从得到的XML中获取天气数据,而不是解析它?例如,是否有Java接口可用,以便我可以调用诸如weatherData.getTemp()之类的东西,而不是遍历XML本身?从NDFD收集数据SOAP响应

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

更新:
这是我使用的wsdl

+0

您能否给出您正在使用的WSDL的链接? – 2008-11-18 14:19:45

+0

是的,我在主帖中添加了它。 – 2008-11-18 15:41:53

回答

0

假设:

  • 你用java

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

那么你可以使用XMLBeans

  • 来自XML Schema开始,XMLBeans的产生,让你编程的方式遍历和操作XML兼容

  • 添加生成的类到您的Java项目

  • 当你从Web响应java类服务,您可以通过分析它

  • 最终构建一个相应的XMLBean对象,可以通过使用Java getter方法访问XML属性(如“TEMP”)

假设weatherData是XMLSchema的复杂类型,那么你就可以到像

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

警告:这种高度依赖于XML架构是如何构成的,所以代码可能会完全不同。但是,XMLBeans通常非常易于使用。

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