【问题标题】:HtmlAgilityPack - How To Get Last Item ValueHtmlAgilityPack - 如何获取最后一项的价值
【发布时间】:2020-07-17 14:19:02
【问题描述】:

我有以下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()]");

但这似乎仍然给了我第一个链接,而不是最后一个

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

【问题讨论】:

    标签: c# html-agility-pack


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-02-26
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 2016-09-16
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 2013-04-25
        相关资源
        最近更新 更多