2016-07-19 54 views
0

我有这段代码(请参阅下面的内容),我想从中获取值'Day.1'和'Day.2'。从HtmlAgilityPack获取类标记的值

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"; 
} 

利用该代码的输出是:

Test: 1 
Test: 1 

为什么变量“STR”正从第一“表头”类两个时间值?

+0

你为什么不直接去了'DIV [@class = \ “表头\”]'节点? – ElenaDBA

+0

当你只需要一个''/' – ElenaDBA

+0

因为我只需要它们2个值并且'table-header'可以在HTML代码的其他部分中找到时,你正在使用双'''''''''''' – 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"; 
     }