2014-04-16 35 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

它没有任何作用 –