我正在使用 Dom4j 解析 SOAP 消息。我遇到了一个问题:
Node node = document.selectSingleNode( "/*/soapenv:Envelope/soapenv:Body/ns:addResponse" );
当我使用上面的 XPath 时,我得到了以下异常:
异常:XPath 表达式使用未绑定的命名空间前缀 ns1
我找到了执行此操作的方法:删除命名空间,这是不推荐的。
任何帮助将不胜感激。谢谢
顺便说一句,这项工作有更好的方法或工具包吗?
问问题
2024 次
1 回答
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 接口和类通常非常简单。
于 2011-06-19T14:10:55.650 回答