📅  最后修改于: 2023-12-03 15:06:58.555000             🧑  作者: Mango
XPath 是一种用于在 XML 或 HTML 文档中搜索节点的语言。在 web 开发和自动化测试等领域中有广泛的应用。本文介绍一些常见的 XPath 语法,以及在 JavaScript 中如何使用 XPath。
XPath 用于定位 XML 或 HTML 文档中的节点,语法类似于文件系统路径。常见的语法如下:
/
表示文档的根节点。//
表示所有节点。.
表示当前节点。..
表示父节点。@
表示属性。在 XPath 中,节点可以根据标签名、属性值等条件来匹配。例如,下面的语法将会匹配标签名为 div
的节点:
//div
如果要匹配指定属性值的节点,可以使用 [@attribute name=attribute value]
的语法。例如,下面的语法将会匹配 class
属性值为 example
的 div
节点:
//div[@class='example']
XPath 还支持一些逻辑运算符,例如 and
和 or
。例如,下面的语法将会匹配 id
属性值为 content
且 class
属性值为 example
的 div
节点:
//div[@id='content' and @class='example']
在 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 表达式,获取节点对象并进行操作。