gpt4 book ai didi

java - 无法比较 xs :string to xs:integer

转载 作者:行者123 更新时间:2023-12-02 10:59:37 28 4
gpt4 key购买 nike

当前在 Talend 上运行代码并抛出此错误

net.sf.saxon.trans.XPathException: Cannot compare xs:string to xs:integer at net.sf.saxon.expr.GeneralComparison.typeCheck(GeneralComparison.java:255)

当将 saxon 9 添加到配置中但将其删除时,它可以正常工作。任何想法为什么它会干扰 xpath

最佳答案

您将哪个版本的 Saxon 添加到配置中?

在 Saxon 9.6 之前,Saxon jar 文件包含一个 list ,表明它是 JAXP XPath 服务提供者。因此,任何尝试使用 JAXP 工厂方法 (XPathFactory.newInstance()) 创建 XPath 提供程序的应用程序代码都会选择 Saxon(如果它恰好位于类路径上)。不幸的是,JAXP API 不够严格,所有 XPath 提供程序都可以互换;特别是,您无法说您需要 XPath 1.0 引擎而不是 XPath 2.0 或 XPath 3.1 引擎。结果(正如我推测这里发生的那样),假设 XPath 1.0 行为(例如在比较中自动将整数转换为字符串)的应用程序可能会失败,因为类路径上存在 Saxon 意味着它实际上正在运行XPath 2.0 或更高版本。

为了解决这个问题,从 Saxon 9.6 开始的版本不再声明自己是 XPath 服务提供者,并且您现在必须直接实例化 Saxon,而不是通过 JAXP 工厂机制。但如果您使用的是 9.6 之前的版本,问题仍然存在。

您可以通过运行来了解您所获得的版本

java -cp saxon9.jar net.sf.saxon.Version

关于java - 无法比较 xs :string to xs:integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51435645/

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