public interface XPathEvaluator
XPath表达式的评估由
XPathEvaluator
提供。在支持XPath 3.0功能的DOM实现中,XPathEvaluator
接口将被实现在同一个对象上,该对象实现了Document
接口,允许通过通常的绑定特定方法(如强制转换或使用DOM Level 3的getInterface方法)获取它。在这种情况下,从Document获取的实现支持XPath DOM模块,并与XPath 1.0规范兼容。
具有专门扩展函数或变量的表达式的评估可能在所有实现中都无法工作,因此不具有可移植性。XPathEvaluator
实现可能来自其他来源,这些来源可以提供对专门扩展函数或变量的特定支持,这些函数或变量将由其他规范定义。
-
Method Summary
Modifier and TypeMethodDescriptioncreateExpression
(String expression, XPathNSResolver resolver) 创建一个带有已解析命名空间的XPath表达式。createNSResolver
(Node nodeResolver) 适配任何DOM节点以解析命名空间,以便可以相对于节点的上下文轻松评估XPath表达式,该节点在文档中的位置。evaluate
(String expression, Node contextNode, XPathNSResolver resolver, short type, Object result) 评估XPath表达式字符串,并在可能的情况下返回指定类型的结果。
-
Method Details
-
createExpression
XPathExpression createExpression(String expression, XPathNSResolver resolver) throws XPathException, DOMException 创建一个带有已解析命名空间的已解析XPath表达式。当表达式将在应用程序中重复使用时,这将非常有用,因为它可以将表达式字符串编译成更有效的内部形式,并预解析表达式中出现的所有命名空间前缀。- 参数:
-
expression
- 要解析的XPath表达式字符串。 -
resolver
-resolver
允许将XPath表达式中的前缀转换为适当的命名空间URI。如果指定为null
,则表达式中的任何命名空间前缀将导致抛出带有代码NAMESPACE_ERR
的DOMException
。 - 返回:
- XPath表达式的编译形式。
- 抛出:
-
XPathException
- INVALID_EXPRESSION_ERR:如果表达式不符合XPathEvaluator
的规则,则引发异常 -
DOMException
- NAMESPACE_ERR:如果表达式包含无法由指定的XPathNSResolver
解析的命名空间前缀,则引发异常。
-
createNSResolver
适配任何DOM节点以解析命名空间,以便可以相对于节点的上下文轻松评估XPath表达式,该节点在文档中的位置。此适配器类似于DOM Level 3方法lookupNamespaceURI
在解析命名空间URI时从给定前缀使用节点的层次结构中当前可用的信息。还可以正确解析隐式的xml前缀。- 参数:
-
nodeResolver
- 用作命名空间解析上下文的节点。 - 返回:
-
XPathNSResolver
,它根据指定节点的范围内的定义解析命名空间。
-
evaluate
Object evaluate(String expression, Node contextNode, XPathNSResolver resolver, short type, Object result) throws XPathException, DOMException 评估XPath表达式字符串,并在可能的情况下返回指定类型的结果。- 参数:
-
expression
- 要解析和评估的XPath表达式字符串。 -
contextNode
-context
是此XPath表达式评估的上下文节点。如果通过强制转换Document
获得了XPathEvaluator,则此节点必须由同一文档拥有,并且必须是Document
、Element
、Attribute
、Text
、CDATASection
、Comment
、ProcessingInstruction
或XPathNamespace
节点。如果上下文节点是Text
或CDATASection
,则上下文将被解释为XPath所见的整个逻辑文本节点,除非节点为空,在这种情况下,它可能不起作用作为XPath上下文。 -
resolver
-resolver
允许将XPath表达式中的前缀转换为适当的命名空间URI。如果指定为null
,则表达式中的任何命名空间前缀将导致抛出带有代码NAMESPACE_ERR
的DOMException
。 -
type
- 如果指定了特定的type
,则结果将作为相应类型返回。对于XPath 1.0结果,这必须是XPathResult
接口的代码之一。 -
result
-result
指定一个特定的结果对象,可以通过此方法重用和返回。如果指定为null
或实现不重用指定的结果,则将构造并返回一个新的结果对象。对于XPath 1.0结果,此对象将是XPathResult
类型。 - 返回:
-
XPath表达式的评估结果。对于XPath 1.0结果,此对象将是
XPathResult
类型。 - 抛出:
-
XPathException
- INVALID_EXPRESSION_ERR:如果表达式不符合XPathEvaluator
的规则,则引发异常
TYPE_ERR:如果无法将结果转换为返回的指定类型,则引发异常。 -
DOMException
- NAMESPACE_ERR:如果表达式包含无法由指定的XPathNSResolver
解析的命名空间前缀。
WRONG_DOCUMENT_ERR:节点来自不受此XPathEvaluator
支持的文档。
NOT_SUPPORTED_ERR:节点不是作为XPath上下文节点允许的类型,或请求类型不被此XPathEvaluator
允许。
-