public interface XPath
XPath
提供了对 XPath 计算环境和表达式的访问。
XPath 表达式的计算。 | |
---|---|
上下文 | 如果在没有上下文项的情况下请求计算表达式,则将使用一个空文档节点作为上下文。为计算 XPath 表达式,应将 DocumentFragment 视为 Document 节点。 |
变量 | 如果表达式包含变量引用,则其值将通过 XPathVariableResolver 找到,其中 XPathVariableResolver 是通过 setXPathVariableResolver(XPathVariableResolver resolver) 设置的。如果变量解析器未定义或解析器对变量返回 null ,则引发 XPathExpressionException 。在任何单个计算过程中,变量的值必须是不可变的。 |
函数 | 如果表达式包含函数引用,则函数将通过 XPathFunctionResolver 找到,其中 XPathFunctionResolver 是通过 setXPathFunctionResolver(XPathFunctionResolver resolver) 设置的。如果函数解析器未定义或解析器为函数返回 null ,则引发 XPathExpressionException 。 |
QNames | 表达式中的 QNames 根据通过 setNamespaceContext(NamespaceContext nsContext) 设置的 XPath 名称空间上下文来解析。 |
结果 | 将计算表达式的结果转换为所需的返回类型的实例。XPathConstants 中定义了有效的返回类型。到返回类型的转换遵守 XPath 转换规则。 |
XPath 对象不是线程安全的,也不能重入。换句话说,应用程序负责确保在任意给定时刻不能有多个线程使用一个 XPath
对象,且当调用 evaluate
方法时,应用程序不能以递归方式调用 evaluate
方法。
方法摘要 | |
---|---|
XPathExpression |
compile(String expression) 编译 XPath 表达式供以后计算使用。 |
String |
evaluate(String expression, InputSource source) 计算指定 InputSource 上下文中的 XPath 表达式并返回 String 形式的结果。 |
Object |
evaluate(String expression, InputSource source, QName returnType) 计算指定 InputSource 上下文中的 XPath 表达式并返回指定类型的结果。 |
String |
evaluate(String expression, Object item) 计算指定上下文中的 XPath 表达式并返回 String 形式的结果。 |
Object |
evaluate(String expression, Object item, QName returnType) 计算指定上下文中的 XPath 表达式并返回指定类型的结果。 |
NamespaceContext |
getNamespaceContext() 返回当前的名称空间上下文。 |
XPathFunctionResolver |
getXPathFunctionResolver() 返回当前的函数解析器。 |
XPathVariableResolver |
getXPathVariableResolver() 返回当前的变量解析器。 |
void |
reset() 将此 XPath 重置为其初始配置。 |
void |
setNamespaceContext(NamespaceContext nsContext) 建立名称空间上下文。 |
void |
setXPathFunctionResolver(XPathFunctionResolver resolver) 建立函数解析器。 |
void |
setXPathVariableResolver(XPathVariableResolver resolver) 建立变量解析器。 |
方法详细信息 |
---|
void reset()
将此 XPath
重置为其初始配置。
XPath
被重置为通过 XPathFactory.newXPath()
创建它时的状态。设计 reset()
旨在允许重用现有的 XPath
,从而节省与创建新 XPath
相关的资源。
不保证重置的 XPath
具有相同的 XPathFunctionResolver
、XPathVariableResolver
或 NamespaceContext
Object
,例如 Object.equals(Object obj)
。但保证具有功能相同的 XPathFunctionResolver
、XPathVariableResolver
和 NamespaceContext
。
void setXPathVariableResolver(XPathVariableResolver resolver)
建立变量解析器。
如果 resolver
为 null
,则抛出 NullPointerException
。
resolver
- 变量解析器。
NullPointerException
- 如果
resolver
为
null
。
XPathVariableResolver getXPathVariableResolver()
返回当前的变量解析器。
如果不存在有效的变量解析器,则返回 null
。
void setXPathFunctionResolver(XPathFunctionResolver resolver)
建立函数解析器。
如果 resolver
为 null
,则抛出 NullPointerException
。
resolver
- XPath 函数解析器。
NullPointerException
- 如果
resolver
为
null
。
XPathFunctionResolver getXPathFunctionResolver()
返回当前的函数解析器。
如果不存在有效的变量解析器,则返回 null
。
void setNamespaceContext(NamespaceContext nsContext)
建立名称空间上下文。
如果 nsContext
为 null
,则抛出 NullPointerException
。
nsContext
- 要使用的名称空间上下文。
NullPointerException
- 如果
nsContext
为
null
。
NamespaceContext getNamespaceContext()
返回当前的名称空间上下文。
如果不存在有效的名称空间上下文,则返回 null
。
XPathExpression compile(String expression) throws XPathExpressionException
编译 XPath 表达式供以后计算使用。
如果 expression
包含任何 XPathFunction
,则它们必须可以通过 XPathFunctionResolver
获取。如果不能通过 XPathFunctionResolver
解析 XPathFunction
,则将抛出 XPathExpressionException
。
如果 expression
包含任何变量,则将使用在编译时有效的 XPathVariableResolver
来解析这些变量。
如果 expression
为 null
,则抛出 NullPointerException
。
expression
- XPath 表达式。
XPathExpressionException
- 如果不能编译
expression
。
NullPointerException
- 如果
expression
为
null
。
Object evaluate(String expression, Object item, QName returnType) throws XPathExpressionException
计算指定上下文中的 XPath
表达式并返回指定类型的结果。
有关上下文项计算、变量、函数和 QName
解析,以及返回类型转换,请参阅 Evaluation of XPath Expressions。
如果 returnType
不是 XPathConstants
(NUMBER
、STRING
、BOOLEAN
、NODE
或 NODESET
) 中定义的某种类型,则抛出 IllegalArgumentException
。
如果 item
为 null
值,则将使用一个空文档作为上下文。如果 expression
或 returnType
为 null
,则抛出 NullPointerException
。
expression
- XPath 表达式。
item
- 开始上下文(例如节点)。
returnType
- 所需的返回类型。
returnType
的
Object
形式返回 XPath 表达式的计算结果。
XPathExpressionException
- 如果不能计算
expression
。
IllegalArgumentException
- 如果
returnType
不是
XPathConstants
中定义的类型之一。
NullPointerException
- 如果
expression
或
returnType
为
null
。
String evaluate(String expression, Object item) throws XPathExpressionException
计算指定上下文中的 XPath 表达式并返回 String
形式的结果。
此方法通过 XPathConstants.STRING
的 returnType
调用 evaluate(String expression, Object item, QName returnType)
。
有关上下文项计算、变量、函数和 QName 解析,以及返回类型转换,请参阅 Evaluation of XPath Expressions。
如果为 item
为 null
值,则将使用一个空文档作为上下文。如果 expression
为 null
,则抛出 NullPointerException
。
expression
- XPath 表达式。
item
- 开始上下文(例如节点)。
String
所得到的结果
String
。
XPathExpressionException
- 如果不能计算
expression
。
NullPointerException
- 如果
expression
为
null
。
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。
如果 returnType
不是 XPathConstants
中定义的类型之一,则抛出 IllegalArgumentException
。
如果 expression
、source
或 returnType
为 null
,则抛出 NullPointerException
。
expression
- XPath 表达式。
source
- 要对其计算的文档的输入源。
returnType
- 所需的返回类型。
Object
。
XPathExpressionException
- 如果不能计算表达式。
IllegalArgumentException
- 如果
returnType
不是
XPathConstants
中定义的类型之一。
NullPointerException
- 如果
expression
、
source
或
returnType
为
null
。
String evaluate(String expression, InputSource source) throws XPathExpressionException
计算指定 InputSource
上下文中的 XPath 表达式并返回 String
形式的结果。
此方法通过 XPathConstants.STRING
的 returnType
调用 evaluate(String expression, InputSource source, QName returnType)
。
有关上下文项计算、变量、函数和 QName 解析,以及返回类型转换,请参阅 Evaluation of XPath Expressions。
如果 expression
或 source
为 null
,则抛出 NullPointerException
。
expression
- XPath 表达式。
source
- 要对其计算的文档的
InputSource
。
String
所得到的结果
String
。
XPathExpressionException
- 如果不能计算表达式。
NullPointerException
- 如果
expression
或
source
为
null
。