我正在学习XPath,我找到了一个我不太懂的例子。可以有人"翻译"它?
匹配xpath:
//span[@class='username']/../../..//span[@class='commentDate']
相对xpath:
/../../..//span[@class='commentDate']
这是否意味着:它选择所有"类"具有属性的elemets" commentDate"元素/属性(类/用户名)和元素/属性(类/注释日期)之间?
我真的不喜欢这部分/../../..
答案 0 :(得分:0)
让我们让您了解xpath
您的xpath
和//span[@class='username']/../../..//span[@class='commentDate']
术语。
xpath
Relative
有两种类型:Absolute
和Relative
。顾名思义,xpath
.//
找到一个相对于另一个节点的节点(通常是以Absolute
开头的短节点)和xpath
root
通常标识一个节点来自其对应的html/body/..../....
节点的节点(通常是以/
开头的长节点)。
单个//
在开始时表示从根开始流程,而xpath
在开始时意味着找到与DOM
匹配的所有节点,这些节点可以位于xpath
的任何位置
来到//
,它以span
开头,这意味着(用英文字面)找到class
username
为child
的所有..
。元素后面的单个斜杠表示其parent
。但是,双span
表示该节点的class=username
。因此,parent
与parent
找到我并告诉我parent
。继续你的xpath,它说找到它的parent
,它的span
,它的child
,然后在parent
的最后找到class
commentDate
为child
的{{1}}。此child
可以是grandchild
或great-grandchild
或nginx -V
,依此类推。
希望这能描绘出某种形象。