模块  java.xml
软件包  javax.xml.xpath

Interface XPathExpression


  • public interface XPathExpression
    XPathExpression提供对已编译的XPath表达式的访问。 XPath评估受下表中描述的因素影响。 Evaluation of XPath Expressions Factor Behavior context The type of the context is implementation-dependent. If the value is null, the operation must have no dependency on the context, otherwise an XPathExpressionException will be thrown. For the purposes of evaluating XPath expressions, a DocumentFragment is treated like a Document node. variables If the expression contains a variable reference, its value will be found through the XPathVariableResolver. An XPathExpressionException is raised if the variable resolver is undefined or the resolver returns null for the variable. The value of a variable must be immutable through the course of any single evaluation. functions If the expression contains a function reference, the function will be found through the XPathFunctionResolver. An XPathExpressionException is raised if the function resolver is undefined or the function resolver returns null for the function. QNames QNames in the expression are resolved against the XPath namespace context. result This result of evaluating an expression is converted to an instance of the desired return type. Valid return types are defined in XPathConstants. Conversion to the return type follows XPath conversion rules.

    XPath表达式不是线程安全的,也不是可重入的。 换句话说,应用程序有责任确保在任何给定时间不从多个线程使用一个XPathExpression对象,并且在调用evaluate方法时,应用程序可能不会递归调用evaluate方法。

    从以下版本开始:
    1.5
    另请参见:
    XML Path Language (XPath) Version 1.0, Expressions
    • 方法详细信息

      • evaluate

        Object evaluate​(Object item,
                        QName returnType)
                 throws XPathExpressionException
        在指定的上下文中计算已编译的XPath表达式,并将结果作为指定的类型返回。

        有关上下文项评估,变量,函数和QName解析以及返回类型转换,请参阅Evaluation of XPath Expressions

        参数item表示将对其运行XPath表达式的上下文。 上下文的类型取决于实现。 如果值为null ,则操作必须不依赖于上下文,否则将引发XPathExpressionException。

        Implementation Note:
        上下文的类型通常是Node
        参数
        item - 将在其中计算XPath表达式的上下文。
        returnType - 期望由XPath表达式返回的结果类型。
        结果
        Object是评估表达式并将结果转换为 returnType的结果。
        异常
        XPathExpressionException - 如果无法计算表达式。
        IllegalArgumentException -如果returnType不在定义的类型之一XPathConstants
        NullPointerException - 如果 returnTypenull
      • evaluate

        String evaluate​(Object item)
                 throws XPathExpressionException
        在指定的上下文中计算已编译的XPath表达式,并将结果作为String返回。

        此方法调用evaluate(Object item, QName returnType) ,其中returnTypeXPathConstants.STRING

        有关上下文项评估,变量,函数和QName解析以及返回类型转换,请参阅Evaluation of XPath Expressions

        参数item表示将对其运行XPath表达式的上下文。 上下文的类型取决于实现。 如果值为null ,则操作必须不依赖于上下文,否则将引发XPathExpressionException。

        Implementation Note:
        上下文的类型通常是Node
        参数
        item - 将在其中计算XPath表达式的上下文。
        结果
        将XPath表达式计算为 String
        异常
        XPathExpressionException - 如果无法计算表达式。
      • evaluateExpression

        default <T> T evaluateExpression​(Object item,
                                         <T> type)
                                  throws XPathExpressionException
        在指定的上下文中计算已编译的XPath表达式,并返回具有通过class type指定的类型的结果。

        参数item表示将对其运行XPath表达式的上下文。 上下文的类型取决于实现。 如果值为null ,则操作必须不依赖于上下文,否则将引发XPathExpressionException。

        实现要求:
        XPath API中的默认实现等效于:
           (T)evaluate(item, XPathEvaluationResult.XPathResultType.getQNameType(type));  
        由于evaluate方法不支持ANY类型,因此将XPathEvaluationResult指定为类型将导致IllegalArgumentException。 支持ANY类型的任何实现都必须覆盖此方法。
        Implementation Note:
        上下文的类型通常是Node
        参数类型
        T - XPath表达式将返回的类类型。
        参数
        item - 将在其中计算XPath表达式的上下文。
        type - 期望由XPath表达式返回的类类型。
        结果
        评估表达式的结果。
        异常
        XPathExpressionException - 如果无法计算表达式。
        IllegalArgumentException - 如果type不是与XPathResultType定义的类型对应的类型,或者XPathEvaluationResult被指定为类型,但支持ANY类型的实现不可用。
        NullPointerException - 如果 typenull
        从以下版本开始:
        9
      • evaluateExpression

        default XPathEvaluationResult<?> evaluateExpression​(Object item)
                                                     throws XPathExpressionException
        在指定的上下文中评估已编译的XPath表达式。 这等同于调用evaluateExpression(Object item, Class type)类型XPathEvaluationResult
           evaluateExpression(item, XPathEvaluationResult.class);  

        参数item表示将对XPath表达式进行操作的上下文。 上下文的类型取决于实现。 如果值为null ,则操作必须不依赖于上下文,否则将抛出XPathExpressionException。

        实现要求:
        XPath API中的默认实现等效于:
           evaluateExpression(item, XPathEvaluationResult.class);  
        由于evaluate方法不支持ANY类型,因此此方法的默认实现将始终抛出IllegalArgumentException。 因此,支持ANY类型的任何实现都必须覆盖此方法。
        Implementation Note:
        上下文的类型通常是Node
        参数
        item - 将在其中计算XPath表达式的上下文。
        结果
        评估表达式的结果。
        异常
        XPathExpressionException - 如果无法计算表达式。
        IllegalArgumentException - 如果此方法的实现不支持 ANY类型。
        从以下版本开始:
        9
      • evaluateExpression

        default <T> T evaluateExpression​(InputSource source,
                                         <T> type)
                                  throws XPathExpressionException
        在指定的上下文中计算已编译的XPath表达式,并使用通过class type指定的类型返回结果

        此方法为InputSource构建数据模型,并在生成的文档对象上调用evaluateExpression(Object item, Class type)

        默认情况下,JDK的数据模型为Document

        实现要求:
        XPath API中的默认实现等效于:
           (T)evaluate(source, XPathEvaluationResult.XPathResultType.getQNameType(type));  
        由于evaluate方法不支持ANY类型,因此将XPathEvaluationResult指定为类型将导致IllegalArgumentException。 任何支持ANY类型的实现都必须覆盖此方法。
        参数类型
        T - XPath表达式返回的类类型。
        参数
        source - 要评估的文件的 InputSource
        type - 期望由XPath表达式返回的类类型。
        结果
        评估表达式的结果。
        异常
        XPathExpressionException - 如果无法计算表达式。
        IllegalArgumentException - 如果type不是与XPathResultType定义的类型对应的类型,或者XPathEvaluationResult被指定为类型,但支持ANY类型的实现不可用。
        NullPointerException - 如果 source or typenull
        从以下版本开始:
        9