【问题标题】:How to get all the element from HTML who having same class attribute?如何从 HTML 中获取具有相同类属性的所有元素?
【发布时间】:2011-09-29 12:56:16
【问题描述】:

我开发了一个 asp.net 应用程序,我使用 htmlagility dll 来获取所有 <div> 标签,它们是相同的类属性。
如何从整个 html 页面中获取所有具有相同类的元素,
我得到了 class='myclass' 但在的前 1 个 div,
我的情况我想要所有具有“myclass”类的 div 标签。

var vardoc = web.Load("<any website url>"); 
var varmyclass = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']"); 

当我使用上述方法时,我得到了“myclass”的内部 html 内容,但在我的 html 内容中,有许多 div 标签具有类“myclass”。 我想使用 HTMLagility 或其他方式获取所有具有相同课程的&lt;div&gt;

【问题讨论】:

    标签: c# html xpath html-agility-pack


    【解决方案1】:

    在这种情况下不要选择单个节点。

    您使用的是SelectSingleNode,它将只返回一个节点。

    改用SelectNodes

    var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");
    

    【讨论】:

      【解决方案2】:

      您几乎是在为这些节点搜索 XML 文档。

      首先,您要选择一个仅返回 1 的节点。您需要使用 SelectNodes。

      示例:

      var varmyclass = doc.DocumentNode.SelectNodes("//div[@class='myclass']");
      

      更新 - 删除了我的 Xpath 建议,因为它没有像我想象的那样工作......

      【讨论】:

        【解决方案3】:

        两个问题,第一个是您应该使用 SelectNodes() 而不是其他答案指出的那样,因为您要选择多个节点。

        另外,您的 XPath 有点限制。它只会得到只有一个类myclassdiv 元素,但不包括具有多个类的元素。我怀疑你也想包括那些。与其检查类是否相等,不如检查它是否包含它。

        var xpath = "//div[contains(@class,'myclass')]";
        var query = doc.DocumentNode.SelectNodes(xpath);
        

        【讨论】:

          猜你喜欢
          • 2011-10-11
          • 2012-08-15
          • 1970-01-01
          • 1970-01-01
          • 2011-09-19
          • 1970-01-01
          • 1970-01-01
          • 2019-06-26
          • 2021-04-17
          相关资源
          最近更新 更多