我喜欢在xPath中使用正则表达式,所以安装了Saxon9.6
- 我的 ${java.home} 是 C:\Program Files\Java\jdk1.7.0_51。
- 我在 C:\Program 中提取了 saxonHE9-6-0-6J.zip 文件\Java\jdk1.7.0_51\jre\lib\ext
- 并将 saxonhe9.jar 添加到我的类路径变量中。
然后我在 C:\Program 下创建了一个 jaxp.properties 文件 Files\Java\jdk1.7.0_51\jre\lib 并添加以下行:
javax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl javax.xml.xpath.XPathFactory","net.sf.saxon.xpath.XPathFactoryImpl
但现在我找不到像 this 上描述的例子页面。
最佳答案
在最新版本的 Saxon 中,JAR 文件不再包含将其宣传为 JAXP XPath 工厂提供程序的 meta-inf 服务文件。这是因为太多的应用程序有问题:如果应用程序被编写并测试为使用 JDK 附带的 XPath 1.0 引擎,那么如果您尝试使用 Saxon 的 XPath 2.0 引擎运行它,它很可能会失败,并且发生这种情况仅仅是因为撒克逊人走上了类(Class)道路。所以如果你想使用 Saxon 作为你的 XPath 引擎,你现在必须使请求明确,例如通过实例化 net.sf.saxon.xpath.XPathFactoryImpl
直接。
我的意思是调用 new XPathFactoryImpl()
而不是 XPathFactoryImpl.newInstance()
因为它继承自 XPathFactory
。
但是,由于 XPath 2.0 类型系统比 XPath 1.0 丰富得多,JAXP 界面真的很笨拙,我会推荐 using the s9api interface相反。
关于java - 如何在 Java 中使用 Saxon XPath 2.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32716850/