And*_*ers 6 java xml xpath saxon
我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
但是,现在我只想使用默认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)
...
Run Code Online (Sandbox Code Playgroud)
我甚至试过"重置"系统属性:
System.setProperty("javax.xml.xpath.XPathFactory:",
"org.apache.xpath.jaxp.XPathFactoryImpl");
XPathFactory factory = XPathFactory.newInstance();
Run Code Online (Sandbox Code Playgroud)
和
System.setProperty("javax.xml.xpath.XPathFactory:",
"http://java.sun.com/jaxp/xpath/dom");
XPathFactory factory = XPathFactory.newInstance();
Run Code Online (Sandbox Code Playgroud)
但这没有帮助,我仍然得到相同的错误信息.
为了再次使用默认的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();
Run Code Online (Sandbox Code Playgroud)
如果可能,请选择真正的 Xerces 实现,而不是 JDK 中的实现。它更可靠。
归档时间: |
|
查看次数: |
4980 次 |
最近记录: |