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

发布于 2024-08-05 12:50:09 字数 162 浏览 4 评论 0原文

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

例如,XML 中有很多额外的数据(在 SOAPBody 中),但我只想获取我为 POJO 设置的参数(例如温度)的数据。

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

I have a client set up to send a request to the National Weather Service SOAP server. I am receiving the response that I expect, but I am unsure as to the best way to extract the data from it that I need.

For example, there is a lot of extra data in the XML (in the SOAPBody), but I only want to grab the data for the parameters that I set (such as temperature) to my POJO.

What's the best way to extract this data?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

So尛奶瓶 2024-08-12 12:50:09

我开始尝试像您所描述的那样手动使用 SOAP Web 服务 - 有更好的方法。

有一些库可以为您完成所有工作 - 无需手动解析任何内容。

查看 JAX-WS。大多数现代 IDE(当然是 NetbeansEclipse) 还为构建 Web 服务客户端提供点击支持给定 WSDL。

这条路线上最大的潜在问题是,如果没有 WSDL,或者 WSDL 是错误的,在这种情况下,我链接的工具可能会遇到困难。

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

最后,您可以使用分割或正则表达式来进行字符串黑客攻击,但沿着这条路走下去会带来很多潜在的痛苦 - 除了嵌套标签之外,XML 规范还有更多内容。

I started out trying to consume SOAP Web Services by hand like you describe - there are better ways.

There are libraries out there that will do all the work for you - no need to parse anything by hand.

Check out JAX-WS. Most Modern IDEs (Certainly Netbeans and Eclipse) also provide point and click support for building web service clients given a WSDL.

The biggest potential problem down this route is if there's no WSDL, or the WSDL is wrong, in which case the tooling I've linked might struggle.

The next safest thing would be to use an XML Parser like JAXP's SAX & DOM etc (they're right there in your JRE) to parse the response and then walk the data structures involved.

Finally you could go the string hacking route using splits or regexes but down that path lies a great deal of potential pain - there's more to the XML spec then nested tags.

破晓 2024-08-12 12:50:09

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

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

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

It's strongly receommended that you not try and decode SOAP by hand :)

Just to expand on what @Brabster said,
Netbeans has extensive Web Service support, especially using the JAX-WS library.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文