在遍历DOM时查找第一个匹配的兄弟元素

时间:2014-09-05 17:02:22

标签: xpath siblings

我正在尝试创建一个xpath表达式,它将找到第一个匹配的兄弟' down'给出一个初始兄弟的dom(注意:最初的兄弟姐妹将是汤姆和史蒂夫)。例如,我想找到' jerry1'汤姆' TR。我已经研究了下面的兄弟争论,但我不确定这是最好的方法吗?有什么想法吗?

<tr>
     <a title=”Tom”/>
</tr>
<tr>
     <a title=”jerry1”/>
</tr>
<tr>
     <a title=”jerry2”/>
</tr>
<tr>
     <a title=”jerry3”/>
</tr>
<tr>
     <a title=”Steve”/>
</tr>
<tr>
     <a title=”jerry1”/>
</tr>
<tr>
     <a title=”jerry2”/>
</tr>
<tr>
     <a title=”jerry3”/>
</tr>

3 个答案:

答案 0 :(得分:1)

following-sibling会奏效。这将选择标题为“jerry1”的a节点:

//a[@title='Tom']/../following-sibling::tr/a

/..遍历Tom的父级<tr>,然后following-sibling遍历下一个<tr>,最后遍历该<a>节点。

答案 1 :(得分:0)

以下XPath为我工作:

(//a[@title='Tom']/parent::*/following-sibling::tr/a[@title= 'jerry1'])[1]

首先将atitle jerry1匹配,tra - title孩子a[@title='Tom'] Tom匹配。 从/parent开始,使用::*/following-sibling::tr转到父tr,选择具有/a[@title= 'jerry1']的所有后续兄弟tr节点,其中jerry1为子节点。因为这将选择2个() - 节点并且搜索Tom之后的第一个jerry1,通过将[1]包裹XPath并选择与{{1}}匹配的第一个匹配来选择第一个。

答案 2 :(得分:0)

以下XPath语句查找第一个tr元素,其中a的{​​{1}}“jerry1”是@title元素的后续兄弟一个tr a的“汤姆”

@title