XPathExpression: evaluate() 方法

Baseline 已广泛支持

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

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

语法

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

参数

contextNode

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

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 xpath = "//div";
const evaluator = new XPathEvaluator();
const expression = evaluator.createExpression("//div");
const result = expression.evaluate(
  document,
  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
);
document.querySelector("output").textContent = result.snapshotLength;

结果

规范

规范
DOM
# dom-xpathexpression-evaluate

浏览器兼容性