如何阅读此XPath代码

时间:2018-01-04 20:47:04

标签: xml xpath

我正在学习XPath,我找到了一个我不太懂的例子。可以有人"翻译"它?

匹配xpath:

//span[@class='username']/../../..//span[@class='commentDate']

相对xpath:

/../../..//span[@class='commentDate']

这是否意味着:它选择所有"类"具有属性的elemets" commentDate"元素/属性(类/用户名)和元素/属性(类/注释日期)之间?

我真的不喜欢这部分/../../..

1 个答案:

答案 0 :(得分:0)

让我们让您了解xpath您的xpath//span[@class='username']/../../..//span[@class='commentDate']术语。

xpath

Relative有两种类型:AbsoluteRelative。顾名思义,xpath .//找到一个相对于另一个节点的节点(通常是以Absolute开头的短节点)和xpath root通常标识一个节点来自其对应的html/body/..../....节点的节点(通常是以/开头的长节点)。

单个//在开始时表示从根开始流程,而xpath在开始时意味着找到与DOM匹配的所有节点,这些节点可以位于xpath的任何位置

来到//,它以span开头,这意味着(用英文字面)找到class usernamechild的所有..。元素后面的单个斜杠表示其parent。但是,双span表示该节点的class=username。因此,parentparent找到我并告诉我parent。继续你的xpath,它说找到它的parent,它的span,它的child,然后在parent的最后找到class commentDatechild的{​​{1}}。此child可以是grandchildgreat-grandchildnginx -V,依此类推。

希望这能描绘出某种形象。