web-dev-qa-db-fra.com

Quel XPath sélectionne le <tr> suivant après un <tr> contenant X?

<tr>
 <td>Blah!</td>
 <td>X</td> <!-- TR containing X -->
 <td>Woot!</td>
</tr>
<tr>
 <td>Useful Data, contents unknown</td> <!-- Select this TR -->
</tr>
<tr>
 <td>Useless data</td> <!-- Don't select this or any subsequent TR -->
</tr>
<tr>
 <td>More crap I don't want</td>
</tr>
<tr>
 <td>X</td> <!-- Another X -->
</tr>
<tr>
 <td>Useful</td> <!-- Do select this one, since previous has X -->
</tr>

Quel XPath retournerait le <tr> immédiatement après le <tr> qui contient X?

41
Gordon

Les réponses de ChaosPandion et Martin c. Löwis fonctionnent toutes les deux pour l'échantillon que vous donnez, mais si vous demandez suivant tr, alors dans certains cas, il y a probablement d'autres éléments tr dans le même tableau. Dans ce cas, les réponses donneront tous les éléments tr suivants ou suivants.

En passant également par la question du titre plutôt que par l'exemple, le xpath devrait probablement permettre au X d'être dans une e cellule au lieu de td. Et je suppose que vous ne voudriez que le tr suivant s'il est dans le même parent (thead, tbody, tfoot).

Alors j'irais pour

//tr[* = 'X']/following-sibling::tr[1]
45
Alohci

Cela devrait fonctionner.

tr[td/text() = 'X']/following-sibling::node()
18
ChaosPandion
//td[.='X']/following::tr
11
Martin v. Löwis