Come ottenere l'ultima tabella in xpath?

c# html-agility-pack xpath

Domanda

Quindi ho la seguente situazione:

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

come puoi vedere ho due tabelle con le stesse classi, voglio ottenere l'ultima tabella (non posso usare l'indice perché il numero della tabella cambia).

Per il momento ho questo codice:

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

sfortunatamente non riesco a trovare alcun metodo .Last() , forse è possibile farlo direttamente con xpath così senza usare SelectNodes() ?

Risposta accettata

Puoi usare last() come indice

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

Assicurati di avvolgere l'espressione tra parentesi.


Risposta popolare

last() restituirà l'ultima tabella solo se entrambe le tabelle sono figli dello stesso genitore. Quindi, se l'HTML sembra davvero

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

poi

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

recupererà la tabella richiesta ...

Ma nel caso

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

potresti aver bisogno di

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


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché