【问题标题】:Using XPath for expression in Java在 Java 中使用 XPath 进行表达式
【发布时间】:2020-01-09 14:54:46
【问题描述】:

在 Java 中为表达式计算 XPath 时,示例:

        String expr = "for $x in * return $x";

        NodeList nodeList = (NodeList) m_xpath.evaluate(
                expr, 
                docXML, XPathConstants.NODESET);

我收到一个错误:

        javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: Extra illegal tokens: '$', 'x', 'in', ...

我意识到我可以简单地将* 用作expr 的值,但我正在尝试了解如何在Java 中将XPath 用于表达式。

【问题讨论】:

    标签: java xml xpath


    【解决方案1】:

    尽管有其他答案和 cmets,for $x in * return $x XPath。 但是,for 需要 XPath 2.0(或更高版本),而javax.xml.xpath API 的默认实现仅支持 XPath 1.0。

    考虑在 Java(和 .NET)中使用 Saxonica's 实现以获得出色的 XPath 2.0+ 支持。

    【讨论】:

    • 一个小小的警告:javax.xml.xpath 是一个 API,而不是一个实现。该 API 在 JDK 中的默认实现仅支持 XPath 1.0;相同 API 的其他实现(例如 Saxon)支持更高版本。
    • @MichaelKay:答案已调整。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多