2016-06-19 28 views
0

タイトルが自分の問題に合っているかどうかわかりません。 私はhtmlagilityパックに新しいです c#htmlagility pack条件付き選択ノード

<table id="searchResultsTable" class=""> 

<tbody> 
    <tr class="searchResultsItem even  "> 
      <td class="searchResultsPriceValue"> 
      <div> 26.500 TL</div></td> 
     <td class="searchResultsTitleValue "> 
        <a class="classifiedTitle" href="xxxx"> some text</a> 
    </tr> 
    <tr class="searchResultsItem odd  "> 
    . 
    //same as "searchResultsItem even  " 
    . 
    </tr> 

</tbody> 

</table> 

下のようなHTMLを持っています。私は "searchResultsItem even"と "searchResultsItem odd"の両方の価格値を得ることに成功しました。

価格がある値以下であれば、href値を取得したいと考えています。私はhrefを得ることができますが、 "searchResultsItem even"のためのすべての時間。私はhrefを得たいと思っています。たとえ価格が私の条件に合っていても、奇妙な場合には私の条件は奇妙になりたいのです。以下

foreach (HtmlNode node1 in doc.DocumentNode.SelectNodes("//table[@id='searchResultsTable']")) 
       { 
        foreach (HtmlNode node2 in node.SelectNodes("//td[@class='searchResultsPriceValue']")) 
        { 
         string price = node2.InnerText.ToString(); 
         price = price.Trim().Replace(".", String.Empty); 
         price = price.Replace("TL", String.Empty); 
         if (Convert.ToInt32(price) < 28000) 
         { 
          HtmlNode node3 = node.SelectSingle(".//a[@class='classifiedTitle']"); 
          listBox1.Items.Add(node3.Attributes["href"].Value); 
         } 
        } 
       } 

おかげ

答えて

0

は、属性値としてtrクラス名を取得する私のコードです。行を最初にループし、次にtdをループします。

foreach (HtmlNode node1 in doc.DocumentNode.SelectNodes("//table[@id='searchResultsTable']")) 
{ 
    foreach (HtmlNode tr in table.SelectNodes("//tr")) 
    { 
    var @class = tr.GetAttributeValue("class", string.Empty); 
    switch (@class) { 
      // rest of your parsing 
    } 
    } 
} 
+0

申し訳ありませんが、GetAttributeValueの仕組みがわかりません。あなたのコードを実行しますが、@class変数は常に空です –