javax.xml,不会从具有名称空间的XML中提取XPath

javax.xml,不会从具有名称空间的XML中提取XPath,第1张

javax.xml,不会从具有名称空间的XML中提取XPath

答案是您需要正确使用名称空间和名称空间前缀

首先,

documentBuilderFactory
在使用名称空间之前先调用它,以使名称空间可识别:

factory.setNamespaceAware(true);

然后执行此 *** 作以检索所需的值:

XPathFactory xPathfactory = XPathFactory.newInstance();XPath xpath = xPathfactory.newXPath();xpath.setNamespaceContext(new NamespaceContext() {    @Override    public String getNamespaceURI(String prefix) {        if (prefix.equals("soap")) { return "http://www.w3.org/2003/05/soap-envelope";        }        if (prefix.equals("zmb")) { return "urn:zimbra";        }        return XMLConstants.NULL_NS_URI;    }    @Override    public String getPrefix(String namespaceURI) {        throw new UnsupportedOperationException("Not supported yet.");    }    @Override    public Iterator getPrefixes(String namespaceURI) {        throw new UnsupportedOperationException("Not supported yet.");    }});XPathexpression expr =        xpath.compile("/soap:Envelope/soap:Header/zmb:context/zmb:session");String sessionId = (String)expr.evaluate(doc, XPathConstants.STRING);

您可能需要在文件开头添加一行以导入NamespaceContext类:

import javax.xml.namespace.NamespaceContext;

http://ideone.com/X3iX5N



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5429660.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存