📜  使用节点的 xpath 备忘单 (1)

📅  最后修改于: 2023-12-03 15:06:58.555000             🧑  作者: Mango

使用节点的 xpath 备忘单

XPath 是一种用于在 XML 或 HTML 文档中搜索节点的语言。在 web 开发和自动化测试等领域中有广泛的应用。本文介绍一些常见的 XPath 语法,以及在 JavaScript 中如何使用 XPath。

XPath 语法

XPath 用于定位 XML 或 HTML 文档中的节点,语法类似于文件系统路径。常见的语法如下:

  • / 表示文档的根节点。
  • // 表示所有节点。
  • . 表示当前节点。
  • .. 表示父节点。
  • @ 表示属性。

在 XPath 中,节点可以根据标签名、属性值等条件来匹配。例如,下面的语法将会匹配标签名为 div 的节点:

//div

如果要匹配指定属性值的节点,可以使用 [@attribute name=attribute value] 的语法。例如,下面的语法将会匹配 class 属性值为 examplediv 节点:

//div[@class='example']

XPath 还支持一些逻辑运算符,例如 andor。例如,下面的语法将会匹配 id 属性值为 contentclass 属性值为 examplediv 节点:

//div[@id='content' and @class='example']
在 JavaScript 中使用 XPath

在 JavaScript 中,可以通过 document.evaluate() 函数来使用 XPath。该函数接受三个参数:XPath 表达式、文档对象和命名空间解析器。通常只需要传递前两个参数。

例如,下面的代码将会返回匹配指定 XPath 表达式的所有节点:

var xpathResult = document.evaluate("//div[@class='example']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

其中 XPathResult.ORDERED_NODE_SNAPSHOT_TYPE 表示返回的结果类型,有多种类型可选。

返回的结果是 XPathResult 类型的对象,可以使用 snapshotLength 属性来获取匹配到的节点数量,使用 snapshotItem() 函数来获取指定下标的节点。

例如,下面的代码将会遍历所有匹配到的节点:

for (var i=0; i<xpathResult.snapshotLength; i++) {
  var node = xpathResult.snapshotItem(i);
  console.log(node);
}
结语

XPath 语言具有强大的定位节点的功能,可以方便地匹配 XML 或 HTML 文档中的节点。在 JavaScript 中,可以使用 document.evaluate() 函数来执行 XPath 表达式,获取节点对象并进行操作。