我编写了一个小应用程序,用于从国家数字预测数据库NDFD检索数据,目前正在正确接收XML响应。我注意到虽然我可以使用WSDL2Java工具来创建接口以请求天气数据,但当我实际使用接口获取天气数据时,它将作为XML字符串返回。除了解析它之外,是否有更简洁的方法以编程方式从生成的XML中获取天气数据?例如,是否有可用的Java接口,以便我可以调用类似weatherData.getTemp()的内容而不是遍历XML本身?
请注意,这是我第一次使用SOAP,所以如果有什么东西我很明显可以忽略,请告诉我。
更新:
这是我正在使用的wsdl。
答案 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来说,这不应该经常发生。