2014-10-03 42 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