我一直在尝试制作一些使用HtmlAgilityPack的简单程序。以下程序检测单词' Address'或者'电话'存在作为“内容”的内容。标签
我在Visual Studio 12中运行此程序。
如下所示的程序给出了错误
未处理的类型' System.NullReferenceException'发生在> StructureClassifier.exe
中附加信息:未将对象引用设置为对象的实例。
请注意,
行 var cells = table.SelectNodes("descendant::th");
如果我用
替换这一行 var cells = table.SelectNodes("descendant::*");
程序运行没有任何错误。
为什么下面的代码不起作用?
using HtmlAgilityPack;
class Program
{
static void Main(string[] args)
{
HtmlWeb w = new HtmlWeb();
HtmlDocument doc = w.Load("http://www.prouds.com.au/stores?state=WA")
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table"))
{
var cells = table.SelectNodes("descendant::th"); // This returns error
//It would work if I were to replace descendant::th to descendant::*
Console.Write(cells.Count);
Console.Write("\n");
foreach (HtmlNode cell in cells)
{
string text = cell.InnerText;
text = text.Trim();
var equal = text.Equals("Address", StringComparison.OrdinalIgnoreCase);
if (equal)
{
Console.Write("Found Match\n");
Console.Write(text);
Console.Write("\n");
}
equal = text.Equals("Phone", StringComparison.OrdinalIgnoreCase);
if (equal)
{
Console.Write("Found Match\n");
Console.Write(text);
Console.Write("\n");
}
}
}
}
}
感谢。