HtmlAgilityPack - 如何获取最后一项值

HtmlAgilityPack - How To Get Last Item Value

我有以下 html:

<ul class="pagination justify-content-center m-0">
   <li class="page-item mx-1 active" aria-current="page">
      <span class="page-link rounded">
      1
      <span class="sr-only">1</span>
      </span>
   </li>
   <li class="page-item mx-1"><a class="page-link rounded" href="/en/?page=2">2</a></li>
   <li class="page-item mx-1"><a class="page-link rounded" href="/en/?page=3">3</a></li>
   <li class="page-item mx-1"><a class="page-link rounded" href="/en/?page=4">4</a></li>
   <li class="page-item mx-1"><a class="page-link rounded" href="/en/?page=5">5</a></li>
   <li class="page-item mx-1"><a class="page-link rounded" href="/en/?page=2">&gt;</a></li>
   <li class="page-item mx-1"><a class="page-link rounded" href="/en/?page=20">&gt;&gt;</a></li>
</ul>

我试过了

var pages = htmlDoc.DocumentNode.SelectSingleNode("//a[contains(@class,'page-link rounded')][last()]");

但这似乎仍然是第一个 link 而不是最后一个

我希望能够得到值“20”,因为这是我列表中的最后一项,这个 html 是一个更大文档的一部分,仅供参考。

当您使用 SelectSingleNode 时,它​​会选择符合条件的第一个节点。我建议使用 SelectNodes 并使用 Last()LastOrDefault() 方法来获取结果的最后一个节点。

var pages = htmlDoc.DocumentNode.SelectNodes("//a[contains(@class,'page-link rounded')]").Last();

另一种可能的解决方案是在使用 last() 之前将表达式包裹在括号 ( , ) 中,如下所示:

var pages = htmlDocument.DocumentNode.SelectSingleNode("(//a[contains(@class,'page-link rounded')])[last()]");