Comment obtenir la dernière table dans xpath?

c# html-agility-pack xpath

Question

J'ai donc la situation suivante:

<table class="table-main detail-odds sortable">
  ..
</table>
<table class="table-main detail-odds sortable">
  ..
</table>

comme vous pouvez le voir, j'ai deux tables avec les mêmes classes, je veux obtenir la dernière table (je ne peux pas utiliser index car le numéro de la table change).

Pour le moment j'ai ce code:

HtmlNode oddsTable = doc.DocumentNode
         .SelectNodes("//table[@class='table-main detail-odds sortable']");

malheureusement, je ne trouve aucune méthode .Last() , peut-être est-il possible de le faire directement avec xpath donc sans utiliser SelectNodes()

Réponse acceptée

Vous pouvez utiliser last() comme index

"(//table[@class='table-main detail-odds sortable'])[last()]"

Assurez-vous de mettre l'expression entre parenthèses.


Réponse populaire

last() ne vous retournera la dernière table que si les deux tables sont des enfants du même parent. Donc, si HTML ressemble vraiment à

<table class="table-main detail-odds sortable">
  ..
</table>
<table class="table-main detail-odds sortable">
  ..
</table>

puis

//table[@class='table-main detail-odds sortable'][last()]

ira chercher la table requise ...

Mais au cas où

<div>
    <table class="table-main detail-odds sortable">
  ..
    </table>
</div>
<div>
    <table class="table-main detail-odds sortable">
  ..
    </table>
</div>

vous pourriez avoir besoin

(//table[@class='table-main detail-odds sortable'])[count(//table[@class='table-main detail-odds sortable'])]



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi