所以我有一些看起来像这样的HTML:
<tr class="a">
<td>...</td>
<td>...</td>
</tr>
<tr>
<td>....</td>
<td class="b">A</td>
</tr>
<tr>....</tr>
<tr class="a">
<td class="b">B</td>
<td>....</td>
</tr>
<tr>
<td class="b">Not this</td>
<td>....</td>
</tr>
基本上,我想找到的第一个实例td
类b
跟随tr
一类的a
。问题就来了的是,它可以在任一的孩子tr
或在未来tr
之后。
我可以得到第二种情况:
//tr[@class="a"]//td[@class="b"]
但这错过了第一种情况,因为TD是同级的,而不是直接的后代。有想法吗?
对于第二种情况(td
是的直接后代tr
):
//tr[@class="a"]//td[@class="b"][1]
对于第一种情况(td
紧随其后tr
),它不属于第二种情况类别:
//tr[@class="a" and not(.//td[@class="b"])]/following::td[@class="b"][1]
使用联合运算符(|
)将两个xpath查询结合在一起,产生预期的输出:
//tr[@class="a"]//td[@class="b"][1] | //tr[@class="a" and not(.//td[@class="b"])]/following::td[@class="b"][1]
输出 :
Element='<td class="b">A</td>'
Element='<td class="b">B</td>'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句