2016-07-19 4 views
0

私はこのコードを使っています(下の図を参照してください)、値「Day.1」と「Day.2」を取得したいと思います。変数「STR」は両方の時間最初の「テーブルヘッダ」クラスから値を取得している理由クラスタグの値をHtmlAgilityPackで取得する

Test: 1 
Test: 1 

:出力され、このコードで

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml("<div class=\"large-10 columns\"><div class=\"box\"><div class=\"table-header\">Day.1</div></div></div>" + 
      "<div class=\"large-10 columns\"><div class=\"box\"><div class=\"table-header\">Day.2</div></div></div>"); 

var classes = doc.DocumentNode.SelectNodes("//div[@class=\"large-10 columns\"]"); 
foreach (var item in classes) 
{ 
    var str = item.SelectSingleNode("//div[@class=\"box\"]//div[@class=\"table-header\"]"); 
    Output += "Test: " + str.InnerText.Split('.')[1] + "\n"; 
} 

+0

なぜあなたは 'divの[@class = \ "テーブルヘッダ\"]'ノードに対してまっすぐに行きませんか? – ElenaDBA

+0

私は2つの値しか必要とせず、HTMLコード内の他の部分で 'table-header'を見つけることができるので、1つの '/' – ElenaDBA

+0

が必要なときはdouble ''を使います。 – user1693813

答えて

1

試してみてください。

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml("<div class=\"large-10 columns\"><div class=\"box\"><div class=\"table-header\">Day.1</div></div></div>" + 
        "<div class=\"large-10 columns\"><div class=\"box\"><div class=\"table-header\">Day.2</div></div></div>"); 

     var classes = doc.DocumentNode.SelectNodes("//div[@class=\"large-10 columns\"]/div[@class=\"box\"]/div[@class=\"table-header\"]"); 
     foreach (var item in classes) 
     { 
      var str = item.InnerText; 
      Output += "Test: " + str.Split('.')[1] + "\n"; 
     } 
関連する問題