1

我编写了一个从 National Digital Forecast Database NDFD检索数据的小型应用程序,并且目前正在正确接收 XML 响应。我注意到虽然我可以使用 WSDL2Java 工具来创建接口以请求天气数据,但当我实际使用接口获取天气数据时,它会以 XML 字符串的形式返回。除了解析之外,是否有一种更简洁的方法可以以编程方式从生成的 XML 中获取天气数据?例如,是否有可用的 Java 接口,以便我可以调用诸如 weatherData.getTemp() 之类的东西,而不是遍历 XML 本身?

请注意,这是我第一次使用 SOAP,所以如果我明显忽略了某些内容,请告诉我。

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

4

1 回答 1

0

假如说:

  • 你用java

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

那么你可以使用XMLBeans

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

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

  • 当你得到Web服务的响应时,你可以通过解析它来构造一个对应的XMLBean对象

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

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

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

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

这个解决方案的一个缺点是,如果 XML Schema 发生变化,那么您必须重新生成您的类,并重新编译您的代码。希望对于稳定的 XML Schema,这种情况不会经常发生。

于 2011-03-22T11:27:53.617 回答