c# - html 敏捷包对象引用未设置为对象的实例

标签 c# asp.net-web-api html-agility-pack

我为了解析 html 使用 Html Agility Pack 等等 Grate stuff 但是我遇到了一些不好的事情:| 这是我的后台代码

public static HtmlDocument GetXHtmlFromUri2(string uri)
    {
        HttpClient client = HttpClientFactory.Create(new CustomeHeaderHandler());


        var htmlDoc = new HtmlDocument()
                                   {
                                       OptionCheckSyntax = true,
                                       OptionFixNestedTags = true,
                                       OptionAutoCloseOnEnd = true,
                                       OptionReadEncoding = true,
                                       OptionDefaultStreamEncoding = Encoding.UTF8,
                                   };

        htmlDoc.LoadHtml(client.GetStringAsync(uri).Result);

        return htmlDoc;

    }

我为 WebApi (Mvc4) 使用 html 敏捷性,这是获取方法逻辑

//GET api/values
    public string GetHtmlFlights()
    {

        var result = ClientFlightTabale.GetXHtmlFromUri2("http://ikiafids.ir/departureFA.html");
        HtmlNode node = result.DocumentNode.SelectSingleNode("//table[1]/tbody/tr[1]");

        string temp = node.FirstChild.InnerHtml.Trim();

        return temp;

    }

但是当我(从浏览器和 Fiddler)调用这个方法时遇到异常,主题是:

对象引用未设置到对象的实例,此异常与此行有关

string temp = node.FirstChild.InnerHtml.Trim();

有人能帮帮我吗?

最佳答案

我认为您正在寻找这样的东西:

var result = ClientFlightTabale.GetXHtmlFromUri2("http://ikiafids.ir/departureFA.html");
var tableNode = result.DocumentNode.SelectSingleNode("//table[1]");

var titles = tableNode.Descendants("th")
                    .Select(th => th.InnerText)
                    .ToList();

var table = tableNode.Descendants("tr").Skip(1)
                    .Select(tr => tr.Descendants("td")
                                    .Select(td => td.InnerText)
                                    .ToList())
                    .ToList();

关于c# - html 敏捷包对象引用未设置为对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520346/

相关文章:

c# - 将大文件流式传输到 Web 服务

c# - Angular - 如何在 subscribe() 上从 Web API 下载文件

asp.net - 客户端可以取消 Web Api 请求吗?

c# - Html Agility Pack - 从 html 文档中获取 html 片段

c# - 使用 html 敏捷包解析表单操作并输入名称和值

c# - 跨多个域的 ASP.NET session

c# - 应用程序通过 ODBC 访问 Sage Line 50 数据时出错

c# - 列表的大小越大,向其中添加新值所需的时间就越多,这是真的吗?

c# - OWIN Startup 类与 WebAPIConfig.Register 方法一起执行

c# - htmlDocument.GetElementById 返回具有相同名称的元素,而不是 id