2016-04-19 9 views
1

によって要素を取得し、私は彼らのクラスは、特定の単語が含まれ、すべてのdiv取得しようとしている: "私は彼らのクラスは単語を含むすべてのdivを取得する必要がありますC#のHTMLの敏捷性パックは、クラス名

<div class="hello mike">content1</div> 
<div class="hello jeff>content2</div> 
<div class="john">content3</div> 

をこんにちは"。このような 何か:

resultContent.DocumentNode.SelectNodes("//div[@class='hello']")) 

どのように私は敏捷性パックでそれを行うことができますか?

答えて

3

divに複数のクラスがあり、動作しないと確信しています。あなたが代わりにこれを試すことができます。

resultContent.DocumentNode.Descendants("div").Where(d => d.Attributes["class"].Value.Contains("hello")); 
+2

他の答えとは逆の欠点が1つあります。「class」がないdivがあると例外がスローされます。これを代わりに使用してください。 '.Where(d => d.GetAttributeValue(" class "、" ").Contains(" hello "));' –

4

私はそれを得た:あなたは、クラスには、特定の単語を含む必要があることを指定しているよう

resultContent.DocumentNode.SelectNodes("//div[contains(@class, 'hello')]")) 
-1
HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); 
htmlDoc.Load(filePath); 
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//div[@class='hello']") 
{ 
    //code 
} 
+1

Doesn ' OPは、単語が部分文字列として含まれているalll divを見つけようとします。例えば 'hello'です。クラス**が** 'hello'のdivのみを選択しています –

1

を、次のように単語があることを保証します。文字列の先頭に

  • と空間
  • またはMに続いて文字列のiddleとクラス属性に
  • または文字列の末尾の空白やスペース
  • またはクラス名のみが先行することで

を囲まれたそれは、の値を比較することによって、そのようにしますスペースで囲まれた指定された単語(hello)のスペースで囲まれたクラス属性。これは、誤検出を避けるためです。class="something-hello-something"

関連する問題