如何从Java中的SOAP响应中提取数据?

我有一个客户端设置为向国家气象服务SOAP服务器发送请求。 我收到了我期望的回复,但我不确定从我需要的数据中提取数据的最佳方法。

例如,XML中存在大量额外数据(在SOAPBody中),但我只想获取我设置的参数(例如温度)的数据到我的POJO。

提取此数据的最佳方法是什么?

我开始试图像你描述的那样手工使用SOAP Web服务 – 有更好的方法。

那里有图书馆可以为你做所有的工作 – 不需要手工解析任何东西。

查看JAX-WS 。 大多数现代IDE(当然是Netbeans和Eclipse )也提供了点击和点击支持,用于在给定WSDL的情况下构建Web服务客户端。

沿着这条路线出现的最大潜在问题是,如果没有WSDL,或者WSDL是错误的,在这种情况下,我链接的工具可能很难。

下一个最安全的事情是使用像JAXP的SAX和DOM等XML解析器(它们就在你的JRE中)来解析响应,然后遍历所涉及的数据结构。

最后,您可以使用拆分或正则表达式进行字符串黑客攻击路径,但沿着该路径存在很多潜在的痛苦 – XML规范和嵌套标记更多。

强烈建议您不要手动尝试解码SOAP 🙂

为了扩展@Brabster的说法,Netbeans拥有广泛的Web服务支持,特别是使用JAX-WS库。

http://www.netbeans.org/kb/60/websvc/jax-ws.html#Exercise_3_1