Как получить последнюю таблицу в xpath?

c# html-agility-pack xpath

Вопрос

Поэтому у меня есть следующая ситуация:

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

как вы можете видеть, у меня есть две таблицы с одинаковыми классами, я хочу получить последнюю таблицу (я не могу использовать индекс, потому что число меняющихся таблиц).

На данный момент у меня есть этот код:

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

к сожалению, я не могу найти какой- .Last() метод .Last() , возможно, это возможно сделать непосредственно с помощью xpath без использования SelectNodes() ?

Принятый ответ

Вы можете использовать last() качестве индекса

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

Обязательно заверните выражение в круглые скобки.


Популярные ответы

last() вернет вам последнюю таблицу только в том случае, если обе таблицы являются дочерними элементами одного и того же родителя. Так что если HTML действительно выглядит

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

тогда

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

выберет требуемую таблицу ...

Но в случае

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

вам может понадобиться

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


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему