当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《XPath:有没有办法为查询设置默认命名空间?》经验,为你挑选了1个好方法。

有没有办法将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);

kdgregory.. 10

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

如果你真的不关心命名空间,你可以做的一件事就是在没有它们的情况下解析文档.只需省略您当前对DocumentBuilderFactory.setNamespaceAware()的调用.

另外,请注意您的前缀可以是您想要的任何内容; 它不必匹配实例文档中的前缀.所以你可以使用h而不是html最小化前缀的视觉混乱.



1> kdgregory..:

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

如果你真的不关心命名空间,你可以做的一件事就是在没有它们的情况下解析文档.只需省略您当前对DocumentBuilderFactory.setNamespaceAware()的调用.

另外,请注意您的前缀可以是您想要的任何内容; 它不必匹配实例文档中的前缀.所以你可以使用h而不是html最小化前缀的视觉混乱.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有