我试图获得他们班级中包含某个词的所有div:
<div class="hello mike">content1</div>
<div class="hello jeff>content2</div>
<div class="john">content3</div>
我需要得到他们班级中包含单词&#34; hello&#34;的所有div。 像这样:
resultContent.DocumentNode.SelectNodes("//div[@class='hello']"))
我怎样才能使用敏捷包?
答案 0 :(得分:8)
我明白了:
server_default
答案 1 :(得分:5)
我确定,因为你的div中有多个类,但是没有用。你可以试试这个:
resultContent.DocumentNode.Descendants("div").Where(d => d.Attributes["class"].Value.Contains("hello"));
答案 2 :(得分:3)
正如我写的here,从Html Agility Pack的v1.6.5版开始,它包含.HasClass("class-name")
扩展方法a。
IEnumerable<HtmlNode> nodes =
htmlDoc.DocumentNode.Descendants(0)
.Where(n => n.HasClass("class-name"));
答案 3 :(得分:1)
由于您已指定该类必须包含某个单词,因此以下内容将确保该单词为:
通过将空格包围的class属性的值与空格包围的指定单词(hello
)进行比较来实现。这是为了避免像class="something-hello-something"
resultContent.DocumentNode.SelectNodes("//div[contains(concat(' ', @class, ' '), ' hello ')]");
答案 4 :(得分:0)
HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.Load(filePath);
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//div[@class='hello']")
{
//code
}