XPathEvaluator:evaluate() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

XPathEvaluator 接口的 evaluate() 方法会在给定的节点或文档上执行 XPath 表达式,并返回一个 XPathResult

语法

js
evaluate(expression, contextNode)
evaluate(expression, contextNode, resolver)
evaluate(expression, contextNode, resolver, type)
evaluate(expression, contextNode, resolver, type, result)

参数

表达式

一个表示要解析和评估的 XPath 表达式的字符串。

contextNode

一个表示用于评估表达式的上下文的 Node

resolver 可选

一个 Nodenull 或任何实现了 lookupNamespaceURI 方法的对象。允许将 XPath 表达式中的所有前缀(包括 xml 命名空间前缀)转换为适当的命名空间 URI。

type 可选

指定通过评估表达式返回的结果的类型。这必须是 XPathResult.Constants 之一。

result 可选

允许指定一个可能被此方法重用并返回的结果对象。如果指定为 null 或实现不重用指定的结果,则将返回一个新的结果对象。

返回值

一个表示 XPath 表达式评估结果的 XPathResult 对象。

异常

INVALID_EXPRESSION_ERR

如果表达式根据 XPathEvaluator 的规则不是合法的,则会引发一个类型为 INVALID_EXPRESSION_ERRDOMException

TYPE_ERR

如果结果无法转换为指定的类型,则会引发一个类型为 TYPE_ERRDOMException

NAMESPACE_ERR

如果表达式包含由指定的 XPathNSResolver 无法解析的命名空间前缀,则会引发一个类型为 NAMESPACE_ERRORDOMException

WRONG_DOCUMENT_ERR

如果提供的上下文节点来自 XPathEvaluator 不支持的文档,则会引发一个类型为 WRONG_DOCUMENT_ERRDOMException

NOT_SUPPORTED_ERR

如果提供的上下文节点不是允许作为 XPath 上下文节点的类型,或者请求的类型不是 XPathEvaluator 允许的,则会引发一个类型为 NOT_SUPPORTED_ERRDOMException

示例

以下示例显示了 evaluate() 方法的用法。

HTML

html
<div>XPath example</div>
<div>Number of &lt;div&gt;s: <output></output></div>

JavaScript

js
const evaluator = new XPathEvaluator();
const result = evaluator.evaluate(
  "//div",
  document,
  null,
  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
);
document.querySelector("output").textContent = result.snapshotLength;

结果

规范

规范
DOM
# dom-xpathevaluatorbase-evaluate

浏览器兼容性