使用HTML敏捷包的C#Null异常

本文关键字:C#Null 异常 HTML 使用 | 更新日期: 2023-09-27 18:28:04

我有一个函数,试图从这个网页中获取一些文本:

http://www.nla.gd/winning-numbers/

public static string get_webpage(string url)
{
    HtmlWeb web = new HtmlWeb();
    HtmlDocument doc = web.Load(url);
    string date = doc.DocumentNode.InnerText;
    string lotto_winning_numbers = doc.DocumentNode.SelectNodes("//[@id='"main'"]/div/strong/div/div[2]/div[1]/div[1]").ToString();
    return lotto_winning_numbers;
}

当我运行函数时,我得到一个NULL异常。

我的xpath正确吗?

使用HTML敏捷包的C#Null异常

在XPath中不能单独使用筛选器(如[@id='main'])。您需要将筛选器应用于像div*这样的节点集合。

请注意,您还希望组合结果集合中的值元素,而不是将集合本身转换为字符串。

类似于:

// Note "*" in front of filter
var lotto_winning_numbers = doc.DocumentNode.SelectNodes(
       "//*[@id='"main'"]/div/strong/div/div[2]/div[1]/div[1]");
// lotto_winning_numbers is collection of nodes here.
return lotto_winning_numbers == null ? String.Empty : 
       String.Join(", ", lotto_winning_numbers);

查看MSDN文章XPath示例或许多其他教程了解更多信息。