如何获取xpath中的最后一个表?

时间:2018-08-02 12:30:33

标签: c# xpath html-agility-pack

所以我有以下情况:

<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()方法,也许可以直接用xpath做到这一点,所以不用SelectNodes()吗?

2 个答案:

答案 0 :(得分:4)

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'])]

答案 1 :(得分:2)

您可以将last()用作索引

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

请务必在表达式中加上括号。