-  
       
public interface XPathXPath提供对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 theXPathVariableResolverset withsetXPathVariableResolver(XPathVariableResolver resolver). AnXPathExpressionExceptionis raised if the variable resolver is undefined or the resolver returnsnullfor 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 theXPathFunctionResolverset withsetXPathFunctionResolver(XPathFunctionResolver resolver). AnXPathExpressionExceptionis raised if the function resolver is undefined or the function resolver returnsnullfor the function. QNames QNames in the expression are resolved against the XPath namespace context set withsetNamespaceContext(NamespaceContext nsContext). result This result of evaluating an expression is converted to an instance of the desired return type. Valid return types are defined inXPathConstants. Conversion to the return type follows XPath conversion rules.XPath对象不是线程安全的,不可重入。 换句话说,应用程序有责任确保在任何给定时间不从多个线程使用一个
XPath对象,并且在调用evaluate方法时,应用程序可能不会递归调用evaluate方法。- 从以下版本开始:
 - 1.5
 - 另请参见:
 - XML Path Language (XPath) Version 1.0
 
 
-  
        
       
-  
             
方法摘要
所有方法 实例方法 抽象方法 Default Methods 变量和类型 方法 描述 XPathExpressioncompile(String expression)编译XPath表达式以供以后评估。Stringevaluate(String expression, Object item)在指定的上下文中计算XPath表达式并将结果返回为String。Objectevaluate(String expression, Object item, QName returnType)在指定的上下文中计算XPath表达式,并将结果作为指定的类型返回。Stringevaluate(String expression, InputSource source)在指定的InputSource的上下文中计算XPath表达式,并将结果返回为String。Objectevaluate(String expression, InputSource source, QName returnType)在指定的InputSource的上下文中计算XPath表达式,并将结果作为指定的类型返回。default XPathEvaluationResult<?>evaluateExpression(String expression, Object item)评估指定上下文中的XPath表达式。default <T> TevaluateExpression(String expression, Object item, 类<T> type)在指定的上下文中计算XPath表达式,并使用通过class type指定的类型返回结果default XPathEvaluationResult<?>evaluateExpression(String expression, InputSource source)评估指定上下文中的XPath表达式。default <T> TevaluateExpression(String expression, InputSource source, 类<T> type)在指定的source的上下文中计算XPath表达式,并返回指定的结果。NamespaceContextgetNamespaceContext()返回当前名称空间上下文。XPathFunctionResolvergetXPathFunctionResolver()返回当前的函数解析器。XPathVariableResolvergetXPathVariableResolver()返回当前变量解析器。voidreset()将此XPath重置为其原始配置。voidsetNamespaceContext(NamespaceContext nsContext)建立命名空间上下文。voidsetXPathFunctionResolver(XPathFunctionResolver resolver)建立功能解析器。voidsetXPathVariableResolver(XPathVariableResolver resolver)建立一个变量解析器。 
 -  
             
 
-  
        
       
-  
             
方法详细信息
-  
reset
void reset()
将此XPath重置为其原始配置。XPath重置为与使用XPathFactory.newXPath()创建时相同的状态。reset()旨在允许重用现有的XPath从而节省与创建新XPath相关的资源。复位
XPath不能保证具有相同的XPathFunctionResolver,XPathVariableResolver或NamespaceContextObjectS,如Object.equals(Object obj)。 但保证具有功能相等XPathFunctionResolver,XPathVariableResolver和NamespaceContext。 
-  
setXPathVariableResolver
void setXPathVariableResolver(XPathVariableResolver resolver)
建立一个变量解析器。一个
NullPointerException如果抛出resolver为null。- 参数
 -  
              
resolver- 可变解析器。 - 异常
 -  
              
NullPointerException- 如果resolver是null。 
 
-  
getXPathVariableResolver
XPathVariableResolver getXPathVariableResolver()
返回当前变量解析器。在没有变量解析器生效的情况下返回
null。- 结果
 - 当前变量解析器。
 
 
-  
setXPathFunctionResolver
void setXPathFunctionResolver(XPathFunctionResolver resolver)
建立功能解析器。一个
NullPointerException如果抛出resolver为null。- 参数
 -  
              
resolver- XPath函数解析器。 - 异常
 -  
              
NullPointerException- 如果resolver是null。 
 
-  
getXPathFunctionResolver
XPathFunctionResolver getXPathFunctionResolver()
返回当前的函数解析器。null返回无功能解析器生效。- 结果
 - 当前功能解析器。
 
 
-  
setNamespaceContext
void setNamespaceContext(NamespaceContext nsContext)
建立命名空间上下文。一个
NullPointerException如果抛出nsContext为null。- 参数
 -  
              
nsContext- 要使用的命名空间上下文。 - 异常
 -  
              
NullPointerException- 如果nsContext是null。 
 
-  
getNamespaceContext
NamespaceContext getNamespaceContext()
返回当前名称空间上下文。在没有名称空间上下文生效的情况下返回
null。- 结果
 - 当前命名空间上下文。
 
 
-  
compile
XPathExpression compile(String expression) throws XPathExpressionException
编译XPath表达式以供以后评估。如果
expression包含任何XPathFunctions,则必须通过XPathFunctionResolver提供 。 一个XPathExpressionException如果将被抛出XPathFunction不能与被来拆分XPathFunctionResolver。如果
expression包含任何变量, 则将在编译时生效的XPathVariableResolver用于解析它们。- 参数
 -  
              
expression- XPath表达式。 - 结果
 - 编译的XPath表达式。
 - 异常
 -  
              
XPathExpressionException- 如果expression无法编译。 -  
              
NullPointerException- 如果expression是null。 
 
-  
evaluate
Object evaluate(String expression, Object item, QName returnType) throws XPathExpressionException
在指定的上下文中计算XPath表达式,并将结果作为指定的类型返回。有关上下文项评估,变量,函数和
QName分辨率和返回类型转换,请参阅Evaluation of XPath Expressions 。参数
item表示将对XPath表达式进行操作的上下文。 上下文的类型取决于实现。 如果值为null,则操作必须不依赖于上下文,否则将抛出XPathExpressionException。- Implementation Note:
 -  
              上下文的类型通常是
Node。 - 参数
 -  
              
expression- XPath表达式。 -  
              
item- 将在其中计算XPath表达式的上下文。 -  
              
returnType- 期望由XPath表达式返回的结果类型。 - 结果
 - 
               将XPath表达式计算为 
              
Object的returnType。 - 异常
 -  
              
XPathExpressionException- 如果无法评估expression。 -  
              
IllegalArgumentException-如果returnType不在定义的类型的一个XPathConstants(NUMBER,STRING,BOOLEAN,NODE或NODESET)。 -  
              
NullPointerException- 如果expression or returnType是null。 
 
-  
evaluate
String evaluate(String expression, Object item) throws XPathExpressionException
在指定的上下文中计算XPath表达式并将结果作为String返回。此方法调用
evaluate(String expression, Object item, QName returnType),其中returnType为XPathConstants.STRING。有关上下文项评估,变量,函数和QName解析以及返回类型转换,请参阅Evaluation of XPath Expressions 。
参数
item表示将对其运行XPath表达式的上下文。 上下文的类型取决于实现。 如果值为null,则操作必须不依赖于上下文,否则将引发XPathExpressionException。- Implementation Note:
 -  
              上下文的类型通常是
Node。 - 参数
 -  
              
expression- XPath表达式。 -  
              
item- 将在其中计算XPath表达式的上下文。 - 结果
 - 
               将XPath表达式计算为 
              
String。 - 异常
 -  
              
XPathExpressionException- 如果无法评估expression。 -  
              
NullPointerException- 如果expression是null。 
 
-  
evaluate
Object evaluate(String expression, InputSource source, QName returnType) throws XPathExpressionException
在指定的InputSource的上下文中计算XPath表达式,并将结果作为指定的类型返回。此方法为
InputSource构建数据模型,并在生成的文档对象上调用evaluate(String expression, Object item, QName returnType)。有关上下文项评估,变量,函数和QName解析以及返回类型转换,请参阅Evaluation of XPath Expressions 。
- 参数
 -  
              
expression- XPath表达式。 -  
              
source- 要评估的文档的输入源。 -  
              
returnType- 所需的返回类型。 - 结果
 -  
              
Object封装了评估表达式的结果。 - 异常
 -  
              
XPathExpressionException- 如果无法计算表达式。 -  
              
IllegalArgumentException-如果returnType不在定义的类型之一XPathConstants。 -  
              
NullPointerException- 如果expression, source or returnType是null。 
 
-  
evaluate
String evaluate(String expression, InputSource source) throws XPathExpressionException
在指定的InputSource的上下文中计算XPath表达式,并将结果返回为String。该方法调用
evaluate(String expression, InputSource source, QName returnType),其中returnType为XPathConstants.STRING。有关上下文项评估,变量,函数和QName解析以及返回类型转换,请参阅Evaluation of XPath Expressions 。
- 参数
 -  
              
expression- XPath表达式。 -  
              
source- 要评估的文件的InputSource。 - 结果
 -  
              
String是评估表达式并将结果转换为String的结果。 - 异常
 -  
              
XPathExpressionException- 如果无法计算表达式。 -  
              
NullPointerException- 如果expression or source是null。 
 
-  
evaluateExpression
default <T> T evaluateExpression(String expression, Object item, 类<T> type) throws XPathExpressionException
在指定的上下文中计算XPath表达式,并使用通过class type指定的类型返回结果参数
item表示将对其运行XPath表达式的上下文。 上下文的类型取决于实现。 如果值为null,则操作必须不依赖于上下文,否则将引发XPathExpressionException。- 实现要求:
 -  
              XPath API中的默认实现等效于: 
              
由于(T)evaluate(expression, item, XPathEvaluationResult.XPathResultType.getQNameType(type));evaluate方法不支持ANY类型,因此将XPathEvaluationResult指定为类型将导致IllegalArgumentException。 任何支持ANY类型的实现都必须覆盖此方法。 - Implementation Note:
 -  
              上下文的类型通常是
Node。 - 参数类型
 -  
              
T- XPath表达式将返回的类类型。 - 参数
 -  
              
expression- XPath表达式。 -  
              
item- 将在其中计算XPath表达式的上下文。 -  
              
type- 期望由XPath表达式返回的类类型。 - 结果
 - 评估表达式的结果。
 - 异常
 -  
              
XPathExpressionException- 如果无法计算表达式。 -  
              
IllegalArgumentException- 如果type不是与XPathEvaluationResult.XPathResultType中定义的类型对应的类型,或者XPathEvaluationResult被指定为类型,但支持ANY类型的实现不可用。 -  
              
NullPointerException- 如果expression or type是null。 - 从以下版本开始:
 - 9
 
 
-  
evaluateExpression
default XPathEvaluationResult<?> evaluateExpression(String expression, Object item) throws XPathExpressionException
评估指定上下文中的XPath表达式。 这等同于调用evaluateExpression(String expression, Object item, Class type)类型XPathEvaluationResult:evaluateExpression(expression, item, XPathEvaluationResult.class);参数
item表示将对其执行XPath表达式的上下文。 上下文的类型取决于实现。 如果值为null,则操作必须不依赖于上下文,否则将引发XPathExpressionException。- 实现要求:
 -  
              XPath API中的默认实现等效于: 
              
由于evaluateExpression(expression, item, XPathEvaluationResult.class);evaluate方法不支持ANY类型,因此此方法的默认实现将始终抛出IllegalArgumentException。 因此,支持ANY类型的任何实现都必须覆盖此方法。 - Implementation Note:
 -  
              上下文的类型通常是
Node。 - 参数
 -  
              
expression- XPath表达式。 -  
              
item- 将在其中计算XPath表达式的上下文。 - 结果
 - 评估表达式的结果。
 - 异常
 -  
              
XPathExpressionException- 如果无法计算表达式。 -  
              
IllegalArgumentException- 如果此方法的实现不支持ANY类型。 -  
              
NullPointerException- 如果expression是null。 - 从以下版本开始:
 - 9
 
 
-  
evaluateExpression
default <T> T evaluateExpression(String expression, InputSource source, 类<T> type) throws XPathExpressionException
在指定的source的上下文中计算XPath表达式,并返回指定的结果。此方法为
InputSource构建数据模型,并在生成的文档对象上调用evaluateExpression(String expression, Object item, Class type)。 数据模型通常为Document- 实现要求:
 -  
              XPath API中的默认实现等效于: 
              
由于(T)evaluate(expression, source, XPathEvaluationResult.XPathResultType.getQNameType(type));evaluate方法不支持ANY类型,因此将XPathEvaluationResult指定为类型将导致IllegalArgumentException。 支持ANY类型的任何实现都必须覆盖此方法。 - 参数类型
 -  
              
T- XPath表达式将返回的类类型。 - 参数
 -  
              
expression- XPath表达式。 -  
              
source- 要评估的文档的输入源。 -  
              
type- 期望由XPath表达式返回的类类型。 - 结果
 - 评估表达式的结果。
 - 异常
 -  
              
XPathExpressionException- 如果无法计算表达式。 -  
              
IllegalArgumentException- 如果type不是与XPathResultType中定义的类型对应的类型,或者XPathEvaluationResult被指定为类型,但支持ANY类型的实现不可用。 -  
              
NullPointerException- 如果expression, source or type是null。 - 从以下版本开始:
 - 9
 
 
-  
evaluateExpression
default XPathEvaluationResult<?> evaluateExpression(String expression, InputSource source) throws XPathExpressionException
评估指定上下文中的XPath表达式。 这等同于调用evaluateExpression(String expression, Object item, Class type)类型XPathEvaluationResult:evaluateExpression(expression, item, XPathEvaluationResult.class);- 实现要求:
 -  
              XPath API中的默认实现等效于: 
              
由于evaluateExpression(expression, source, XPathEvaluationResult.class);evaluate方法不支持ANY类型,因此此方法的默认实现将始终抛出IllegalArgumentException。 因此,支持ANY类型的任何实现都必须覆盖此方法。 - 参数
 -  
              
expression- XPath表达式。 -  
              
source- 要评估的文档的输入源。 - 结果
 - 评估表达式的结果。
 - 异常
 -  
              
XPathExpressionException- 如果无法计算表达式。 -  
              
IllegalArgumentException- 如果此方法的实现不支持ANY类型。 -  
              
NullPointerException- 如果expression or source是null。 - 从以下版本开始:
 - 9
 
 
 -  
 
 -