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">></a></li>
<li class="page-item mx-1"><a class="page-link rounded" href="/en/?page=20">>></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()]");
我有以下 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">></a></li>
<li class="page-item mx-1"><a class="page-link rounded" href="/en/?page=20">>></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()]");