xpath里//和./的区别
时间: 2023-08-04 15:03:04 浏览: 282
在XPath中,"//"和"./"都是用于定位节点的路径表达式,但它们有一些区别。
1. "//":它表示选择文档中的任何位置的节点。无论节点在文档的任何位置,都会被选择。例如,使用"//div"将选择文档中所有的 div 节点。
2. "./":它表示选择当前节点的子节点。它是相对路径表达式,以当前节点为基准。例如,使用"./div"将选择当前节点下的所有 div 子节点。
总结起来,"//"用于选择文档中的任何位置的节点,而"./"用于选择当前节点的子节点。
相关问题
xpath关于./ .// //../
XPath 是一种用于在 XML 或 HTML 文档中查找信息的语言。它使用路径表达式来选择 XML 或 HTML 文档中的节点或节点集合。
- `./`:表示当前节点,例如 `./div` 表示当前节点下的所有 div 元素。
- `//`:表示从文档根节点开始查找,例如 `//div` 表示文档中所有的 div 元素。
- `../`:表示当前节点的父节点,例如 `../div` 表示当前节点的父节点下的所有 div 元素。
- `.//`:表示从当前节点开始查找,包括当前节点本身。例如 `.//div` 表示当前节点及其子孙节点中的所有 div 元素。
需要注意的是,`./` 和 `.//` 的区别在于 `./` 只会选择当前节点的直接子节点,而 `.//` 会选择当前节点的所有后代节点。`//` 和 `../` 的区别在于 `//` 会从文档根节点开始查找,而 `../` 只会选择当前节点的父节点。
xpath /和//
引用[1]:在XPath中,"/"和"//"是两种不同的路径表达方式。"/"表示从根节点开始的绝对,而"//"表示相对路径,可以跳过任意级别的节点。具体区别如下:
- "/":元素是上一级节点的子节点中的一个,不能跳级。
- "//":下级任何子节点或者任何嵌套子节点中的一个,可以跳级路径里不能用"*",要写标签名。[1]
引用[2]:在实际代码中,可以使用"/"或"//"来定位元素。例如,response.xpath("//h1[@class='main-title']/text()")表示使用相对路径"//"来获取class属性为"main-title"的h1标签的文本内容。而response.xpath("//div[@class='article']//p/text()")表示使用相对路径"//"来获取class属性为"article"的div标签下所有p标签的文本内容。[2]
引用[3]:在实验中,使用了一个HTML文档作为示例。当使用"/"时,只能提取当前节点的直接子节点的内容,例如"//div[@id='div1']/p/text()"无法提取到p标签的内容。而使用"//"时,可以提取当前节点及其所有后代节点中的内容,例如"//div[@id='div1']//p/text()"可以提取到p标签的内容。同样,对于a标签也是一样的情况。[3]
综上所述,"/"表示绝对路径,只能获取当前节点的直接子节点的内容,而"//"表示相对路径,可以获取当前节点及其所有后代节点的内容。