gpt4 book ai didi

java - XPathFactory 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:29:10 25 4
gpt4 key购买 nike

我正在尝试使用 XPathFactory 来计算 Java 应用程序中的表达式。但是我遇到了撒克逊特有的错误。有一次我使用 Saxon 来实现某些功能,为此我必须设置一个系统属性:

System.setProperty("javax.xml.xpath.XPathFactory:" + NamespaceConstant.OBJECT_MODEL_SAXON,
"net.sf.saxon.xpath.XPathFactoryImpl");

XPathFactory xpf = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON);

但是,现在我只想使用默认 DOM (org.w3c.dom.Document) 进行一些 XML 处理并使用 xpath 进行处理,因此不需要 Saxon。但是当我尝试创建 XPathFactory 时,我仍然收到 Saxon 错误消息:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: net/sf/saxon/lib/EnvironmentVariableResolver
at net.sf.saxon.xpath.XPathFactoryImpl.<init>(XPathFactoryImpl.java:26)
...

我什至尝试“重置”系统属性:

System.setProperty("javax.xml.xpath.XPathFactory:",
"org.apache.xpath.jaxp.XPathFactoryImpl");

XPathFactory factory = XPathFactory.newInstance();

System.setProperty("javax.xml.xpath.XPathFactory:",
"http://java.sun.com/jaxp/xpath/dom");

XPathFactory factory = XPathFactory.newInstance();

但这没有帮助,我仍然收到相同的错误消息。

如何摆脱它以便再次使用默认的 XPathFactory? (这在我尝试使用 Saxon 之前效果很好)

最佳答案

作为解决方法,您可以显式实例化 JDK 工厂(或 Xerces 或 Saxon 的)。

import org.apache.xpath.jaxp.XPathFactoryImpl
// import com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl
// import net.sf.saxon.xpath.XPathFactoryImpl
...
XPathFactory factory = new XPathFactoryImpl();

如果可能,最好选择真正的 Xerces 实现而不是 JDK 中的实现。它更可靠。

关于java - XPathFactory 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935897/

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