微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – XPath:有没有办法为查询设置默认的命名空间?

有没有办法设置 Java XPath为名称空间前缀?例如,而不是:/ html:html / html:head / html:title / text()“,查询可以是:/ html / head / title / text

在使用命名空间前缀时,必须有一个更优雅的方式.

我现在正在做的示例代码片段

Node node = ... // DOM of a HTML document
XPath xpath = XPathFactory.newInstance().newXPath();

// set to a NamespaceContext that simply returns the prefix "html"
// and namespace URI ""http://www.w3.org/1999/xhtml"
xpath.setNamespaceContext(new HTMLNameSpace());

String expression = "/html:html/html:head/html:title/text()";
String value = xpath.evaluate(query,expression);

解决方法

很不幸的是,不行.几年前有一些关于为 JxPath定义认命名空间的讨论,但是快速浏览最新的文档并不表示发生了什么.不过,您可能想花更多的时间浏览文档.

你可以做的一件事,如果你真的不在乎命名空间,就是解析没有它们的文档.只要省略您目前正在进行的电话DocumentBuilderFactory.setNamespaceAware().

另外请注意,您的前缀可以是任何您想要的;它不必与实例文档中的前缀匹配.所以你可以使用h而不是html,并尽量减少前缀的视觉混乱.

原文地址:https://www.jb51.cc/java/126627.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐