java - 如何在 Java 中使用 Saxon XPath 2.0?

标签 java xpath saxon

我喜欢在xPath中使用正则表达式,所以安装了Saxon9.6

  1. 我的 ${java.home} 是 C:\Program Files\Java\jdk1.7.0_51。
  2. 我在 C:\Program 中提取了 saxonHE9-6-0-6J.zip 文件\Java\jdk1.7.0_51\jre\lib\ext
  3. 并将 saxonhe9.jar 添加到我的类路径变量中。
  4. 然后我在 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/

相关文章:

java.lang.ClassCastException 同时膨胀布局

java - 如何刷新recyclerview?

java - 未出现 JSF 验证错误消息

Selenium WebDriver - Xpath(或任何东西)来定位表中单元格旁边的单元格?

xml - 如何在 Saxon CLI 中定义 XML 命名空间,以便我可以查询该命名空间中的内容?

command-line - 在命令行上运行 XQuery

java - Eclipse 从代码行中删除错误文本

date - 将格式化的日期字符串转换为XPath中的日期值

Java Selenium WebDriver找不到表单字段

java - 在 XSLT 和 SAXON 中运行自定义 Java 函数 (9.1.8)