gpt4 book ai didi

xpath - 使用 dom4j 将 XPath 3.0 添加到代码库的最轻松的方法

转载 作者:行者123 更新时间:2023-12-03 15:53:15 24 4
gpt4 key购买 nike

据我了解,SAXON 是唯一支持 Java XPath 3.0 的库。它的 JAXP 实现只支持 XPath 2.0。它的 XPath 3.0 实现应称为 this way并要求我首先使用自己的 API 构建文档,而不是使用 DOM4J 等符合 JAXP 标准的 API。

这很痛苦,因为我一直小心地将所有使用 XPath 的东西抽象到一个以 JAXP 节点和 xpath 字符串作为参数的代理接口(interface),但如果我必须重构所有东西以使用来自自上而下。

我是不是误会了什么?有没有更痛苦的方法?

最佳答案

我越来越多地尝试鼓励用户优先使用 s9api API 而不是 JAXP 进行 XPath 处理。原因有很多种:JAXP 接口(interface)对 DOM 以外的树模型只提供了非常半心半意的支持;它确实与 XPath 2.0 和现在的 3.0 的扩展类型系统作斗争,并且在 Saxon 的情况下,它根本不能与其他 XML 技术和 API 很好地互操作。

但是,Saxon 继续支持 JAXP XPath API,尽管它存在所有局限性,既针对其自身的树模型,也针对第三方树模型(例如 DOM4J)。

我们放弃的一件事是对 XPath 服务接口(interface)的支持,如果它在类路径上,使用 XPathFactory.newInstance() 方法的应用程序将选择 Saxon。这样做的原因是,当您编写应用程序时,您确实需要知道您需要 XPath 1.0 还是 2.0 处理器,而 JAXP 机制无法让您说出您想要哪个,也无法发现您已经获得了哪个。结果是许多应用程序在使用不正确的类路径部署时遇到难以诊断的故障。如果您希望 Saxon 作为您的 JAXP XPath 提供者,您现在必须明确要求。

如果您能更具体地说明您正在尝试做什么,以及它是如何失败的,那将会很有用。

关于xpath - 使用 dom4j 将 XPath 3.0 添加到代码库的最轻松的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35318573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com