首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Html敏捷包按类获取所有元素

Html敏捷包按类获取所有元素
EN

Stack Overflow用户
提问于 2012-12-08 05:15:48
回答 5查看 108.3K关注 0票数 76

我正在尝试html的敏捷性包,但是很难找到正确的方法来解决这个问题。

例如:

var findclasses = _doc.DocumentNode.Descendants("div").Where(d => d.Attributes.Contains("class"));

但是,显然您可以添加比div多得多的类,所以我尝试这样做。

var allLinksWithDivAndClass = _doc.DocumentNode.SelectNodes("//*[@class=\"float\"]");

但这并不能处理这样的情况:你添加了多个类,而"float“只是其中之一。

class="className float anotherclassName"

有没有办法处理这一切?基本上,我希望选择所有具有class =且包含浮点数的节点。

**答案已记录在我的博客上,完整解释如下:Html Agility Pack Get All Elements by Class

EN

回答 5

Stack Overflow用户

发布于 2012-12-30 10:12:38

您可以通过在Xpath查询中使用“contains”函数来解决问题,如下所示:

var allElementsWithClassFloat = 
   _doc.DocumentNode.SelectNodes("//*[contains(@class,'float')]")

要在函数中重用它,请执行类似以下操作:

string classToFind = "float";    
var allElementsWithClassFloat = 
   _doc.DocumentNode.SelectNodes(string.Format("//*[contains(@class,'{0}')]", classToFind));
票数 93
EN

Stack Overflow用户

发布于 2017-01-06 04:18:59

我在我的项目中经常使用这个扩展方法。希望能对你们中的某个人有所帮助。

public static bool HasClass(this HtmlNode node, params string[] classValueArray)
    {
        var classValue = node.GetAttributeValue("class", "");
        var classValues = classValue.Split(' ');
        return classValueArray.All(c => classValues.Contains(c));
    }
票数 6
EN

Stack Overflow用户

发布于 2017-02-27 05:03:26

public static List<HtmlNode> GetTagsWithClass(string html,List<string> @class)
    {
        // LoadHtml(html);           
        var result = htmlDocument.DocumentNode.Descendants()
            .Where(x =>x.Attributes.Contains("class") && @class.Contains(x.Attributes["class"].Value)).ToList();          
        return result;
    }      
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13771083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档