如何从java中解析SOAP响应消息中的数据

时间:2011-06-17 15:58:07

标签: soap dom4j

我正在使用Dom4j来解析SOAP消息。我有一个问题:
Node node = document.selectSingleNode(“/ * / soapenv:Envelope / soapenv:Body / ns:addResponse”);
当我使用上面的XPath时,我得到以下异常:
例外:XPath表达式使用未绑定的名称空间前缀ns1 我找到了这样做的方法:删除命名空间,这是不推荐的。
任何帮助将不胜感激。谢谢
顺便说一句,这项工作有更好的方法或工具包吗?

1 个答案:

答案 0 :(得分:1)

您需要创建一个org.dom4j.XPath对象并为其附加合适的命名空间绑定。像这样:

XPath xpath = document.createXPath("/*/soapenv:Envelope/soapenv:Body/ns:addResponse");
Map<String, String> nsb = new HashMap<String, String>();
nsb.put("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
nsb.put("ns", ".....");
Node node = xpath.selectSingleNode(document);

有更好的方法吗?好吧,现在有JAX-WS,如果有WSDL可用于您的服务,那么为它生成Java接口和类通常非常简单。