我看过很多关于DOM4J只支持XPath 1.0的帖子。我有一些使用DOM4J的实用程序,它们现在被要求支持一些使用XPath 2.0功能的动态参数。有没有人知道如何扩展DOM4J以支持XPath 2.0的示例?有没有可能使用SAXON (同样是示例或文档)?
发布于 2020-08-31 16:11:51
您可以对DOM4J文档树使用Saxon XPath引擎。如果您想要“开箱即用”的功能,您需要一个Saxon-PE或-EE许可证;但是如果您想自己构建它,源代码是可用的。
您可以使用JAXP XPath接口(只需提供一个DOM4J文档节点,JAXP请求一个Object)或使用Saxon的s9api接口:创建一个net.sf.saxon.s9api.DocumentBuilder并调用其wrap()方法将DOM4J文档包装为XdmNode。查询的结果将作为XdmNode对象返回;XdmNode.getExternalNode()将返回底层的DOM4J Node。
发布于 2020-08-31 20:13:16
在线示例在Saxon存储库中,这里是用于Saxon 9.7HE的https://saxonica.plan.io/projects/saxon/repository/he/revisions/master/entry/latest9.7/samples/java/he/S9APIExamples.java#L970,因为它是“仅”支持XPath 2.0的最新版本,而较新的版本(9.8和更高版本)将支持XPath 3.1。
https://stackoverflow.com/questions/63663720
复制相似问题