XPath用于获取下一个/同级/后续HTML元素?

4
在以下HTML代码中,我有两个嵌套的<href>链接:
<a href="/cgi-bin/WebOb/mamool/8.2">
<img width="12" border="0" align="ABSMDIDDLE" height="7" src="/WebOb/mamool/Frameworks/fig.gif">
Click me for more info
</a>
<table border="1" size="2" font="">
<tbody>
<tr>
<td>
<font size="2">
<a name="179"></a>
    <a href="/cgi-bin/WebOb/mamool/8.2.44">
    <img width="12" border="0" align="ABSMDIDDLE" height="7" src="/WebOb/mamool/Frameworks/myfig.gif">
</a>
</td>
</tr>
<tr bgcolor="#d6e2ff">
<td>
</tr>
</tbody>
</table>

我可以轻松地找到第一个 <href> 链接的XPath,就像这样:

//a[contains(text(), 'Click me for more info')]

现在我想知道如何找到下一个<href>,而不需要搜索,只需使用类似于.next()的方法即可。

1个回答

3
下一个兄弟元素可以使用following-sibling轴进行选择:
//a[contains(text(), 'Click me for more info')]/following-sibling::*[1]

在您的示例中,将选择table元素。

如果您想选择文档中的下一个a元素,请使用following轴:

//a[contains(text(), 'Click me for more info')]/following::a[1]

只是一个快速的问题@kjhughes,如果我有两个包含“点击获取更多信息”的href链接,我应该如何选择第一个,这样正确吗?//a[contains(text(),'Click me for more info')][1]/following::a[1] - Mohammad
1
要选择第二个“点击获取更多信息”的a,请使用//a[contains(text(),'点击获取更多信息')][2] - kjhughes
嗨@kjhughes,我有一个关于这个的问题。有没有办法使“包含”函数与大小写无关。例如,在上面的情况下,我想检测“Click me for more info”和“cLicK ME for more Info”。非常感谢。 - Mohammad
1
请参考XPath 2.0不区分大小写的contains(),如果您只能使用XPath 1.0,请参考此处 - kjhughes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接