Java中XPath 2.0的使用是否可行?

21

我应该使用哪个包来进行XPath查询?我想要查询元素并从这些节点周围提取一些值,可能是一个或多个较高级别的节点,还有一些属性。

javax.xml.xpath 是XPath 1.0。使用 javax.xml.xpathorg.w3c.dom 是否是正确的方法,或者是否有更现代的实现?org.w3c.dom 非常麻烦,JDOM 看起来更加容易。


1
如果您想使用XPath 2.0,则需要将外部实现添加到类路径中。您需要从2.0中获得什么? - Thorbjørn Ravn Andersen
这就是为什么我还不知道。它是一个非常通用的工具,可以接受xPath作为输入。所以我想要一些好的东西,为了未来。也许是Jaxon? - Franz Kafka
在这种情况下,为什么不先从标准运行时库中的XPath 1.0开始,并使其先正常工作呢? - Thorbjørn Ravn Andersen
好问题,加一。请看我的答案,里面有两个可能使用的工具。 - Dimitre Novatchev
JDK内置的XPath实现使用XPath 1.0,至少在Java 17中如此(https://dev59.com/iVbUa4cB1Zd3GeqPAJzZ#5803028)。 - Joshua Goldberg
1个回答

15
您可以考虑使用基于Java的XPath 2.0或XQuery实现(选择XSLT 2.0提供更强大的功能),例如Saxon 9.x。Saxon是开源的,是迄今为止最高质量的基于Java的处理器之一,我在回答SO XSLT / XPath / XQuery问题时每天都在使用它。在文档中,您将找到良好的代码示例。我所知道的唯一独立的XPath 2.0实现是PsychoPath,但我不确定其质量和可用性。

有什么变化吗?还有其他的选择吗?我很难在这个主题上找到任何信息。 - Igor G.
1
@IgorG。我不知道这个领域有任何新的玩家。现在有XPath 3.0和3.1,但这些通常是包含在XSLT或XQuery处理器中的,例如Saxon、BaseX、Marklogic等。拥有一个独立的XPath 3处理器会很好。 - Dimitre Novatchev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接