2014-04-16 36 views
0

我有一個程序由HtmlAgilityPack編碼,並不能正常工作。 Url和節點是正確的。但它有一個指向foreach的錯誤。HtmlAgilityPack返回null

的錯誤不是設置爲一個對象的一個​​實例

對象引用。

它以前有效。我刪除HtmlAgilityPack DLL並再次添加它。但不起作用。 我需要訪問標籤的href。

我的代碼是:

string source = wc.DownloadString("http://example.com"); 

HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); 
document.LoadHtml(source); 
foreach (HtmlNode div in 
     document.DocumentNode.SelectNodes("//div[@class='test']/a")) 
{ 
//do something 
} 
+1

'SelectNodes'返回null。您必須將'SelectNodes'函數的結果賦給某個變量並將其檢查爲空。你可以檢查[HtmlAgilityPack DocumentNode.SelectNodes返回null,不應該](http://stackoverflow.com/questions/8619724/htmlagilitypack-documentnode-selectnodes-returns-null-shouldnt)的問題。如果它以前工作過 - 那麼HTML結構可能已經改變了,所以你需要編寫新的XPath表達式。 –

+0

它不起作用。並且HTML結構沒有改變 –

+1

它是否拋出相同的異常?添加完整的例外細節。 –

回答

0

榮譽給Ulugbek Umirov,這裏是你的代碼空引用檢查:如果沒有節點可以發現

string source = wc.DownloadString("http://example.com"); 

HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); 
document.LoadHtml(source); 

var documentNode = document.DocumentNode; 
if (documentNode!=null) 
{ 
    var nodes = documentNode.SelectNodes("//div[@class='test']/a"); 
    if (nodes!=null) 
    { 
     foreach (HtmlNode div in nodes) 
     { 
      // Do something... 
     } 
    } 
} 
+0

它沒有任何作用 –