-
public interface XPath
XPath
提供对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 theXPathVariableResolver
set withsetXPathVariableResolver(XPathVariableResolver resolver)
. AnXPathExpressionException
is raised if the variable resolver is undefined or the resolver returnsnull
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 theXPathFunctionResolver
set withsetXPathFunctionResolver(XPathFunctionResolver resolver)
. AnXPathExpressionException
is raised if the function resolver is undefined or the function resolver returnsnull
for 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 Modifier and Type 方法 描述 XPathExpression
compile(String expression)
编译XPath表达式供以后评估。String
evaluate(String expression, Object item)
在指定的上下文中评估XPath表达式,并将结果作为String
返回。Object
evaluate(String expression, Object item, QName returnType)
在指定的上下文中评估一个XPath
表达式,并将结果作为指定的类型返回。String
evaluate(String expression, InputSource source)
在指定的InputSource
的上下文中评估XPath表达式,并将结果作为String
返回。Object
evaluate(String expression, InputSource source, QName returnType)
在指定的InputSource
的上下文中评估XPath表达式,并将结果作为指定的类型返回。default XPathEvaluationResult<?>
evaluateExpression(String expression, Object item)
评估指定上下文中的XPath表达式。default <T> T
evaluateExpression(String expression, Object item, Class<T> type)
在指定的上下文中评估一个XPath表达式,并通过class type
指定的类型返回结果default XPathEvaluationResult<?>
evaluateExpression(String expression, InputSource source)
评估指定上下文中的XPath表达式。default <T> T
evaluateExpression(String expression, InputSource source, Class<T> type)
计算指定的上下文中的XPath表达式source
和作为指定返回结果。NamespaceContext
getNamespaceContext()
返回当前命名空间上下文。XPathFunctionResolver
getXPathFunctionResolver()
返回当前函数解析器。XPathVariableResolver
getXPathVariableResolver()
返回当前变量解析器。void
reset()
将此XPath
重置为原始配置。void
setNamespaceContext(NamespaceContext nsContext)
建立命名空间上下文。void
setXPathFunctionResolver(XPathFunctionResolver resolver)
建立一个函数解析器。void
setXPathVariableResolver(XPathVariableResolver resolver)
建立变量解析器。
-
-
-
方法详细信息
-
reset
void reset()
将此XPath
重置为原始配置。XPath
被复位到与使用XPathFactory.newXPath()
创建的状态相同的状态。reset()
旨在允许现有的XPath
s的重用,从而节省与创建新的XPath
s相关的资源。复位
XPath
不能保证具有相同XPathFunctionResolver
,XPathVariableResolver
或者NamespaceContext
Object
S,如Object.equals(Object obj)
。 但保证具有功能相等XPathFunctionResolver
,XPathVariableResolver
和NamespaceContext
。
-
setXPathVariableResolver
void setXPathVariableResolver(XPathVariableResolver resolver)
建立变量解析器。一个
NullPointerException
如果抛出resolver
为null
。- 参数
-
resolver
- 可变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
包含任何XPathFunction
s,它们必须通过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, Class<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, Class<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
-
-