2014-10-03 23 views
0

我有以下代码,它应该遍历所有<td>的只有一个表(页面上的第四个)。Html敏捷包,表节点上的迭代不工作

foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table").Skip(4).Take(1)) 
      { 
       Console.WriteLine(table.SelectNodes("//table").Count()); // = 5? 
       Console.WriteLine(table.SelectNodes("//table").Skip(4).Take(1).Count()); // = 1! 

       foreach (var td in table.SelectNodes("//td")) 
       { 
        Console.WriteLine(td.InnerText); 
       } 
      } 

出于某种原因table.SelectNodes("//td")通过所有五个表<td>的迭代。

任何想法,我可以改正这一点?

回答

1

您需要在XPath的开始处添加一个点(.),使其识别为相对路径(在这种情况下,相对于当前table):

foreach (var td in table.SelectNodes(".//td")) 
{ 
    Console.WriteLine(td.InnerText); 
} 
+0

完美!我会记住这个供将来参考 - 谢谢。 – 2014-10-03 09:17:40