Пакет гибкости html Ссылка на объект не установлена ​​​​на экземпляр объекта

Я для синтаксического анализа html использую Html Agility Pack и так далее Grate, но я столкнулся с некоторыми плохими вещами: | это мой фоновый код

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;

    }

я использую гибкость html для WebApi (Mvc4), и это логика метода получения

//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;

    }

но когда я вызываю этот метод (из браузера и скрипача), возникают исключения с этой темой:

Ссылка на объект не указывает на экземпляр объекта, и это исключение относится к этой строке

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

Кто-нибудь может мне помочь ?


person Alireza Davoodi    schedule 22.11.2012    source источник


Ответы (2)


Я думаю, вы ищете что-то вроде этого:

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();
person L.B    schedule 22.11.2012
comment
Как это может быть отнесено к конкретным свойствам? - person Alireza Davoodi; 23.11.2012
comment
извините, но я хочу, чтобы каждый из элементов (td) был назначен одному свойству, например Model.FlightID - person Alireza Davoodi; 23.11.2012

Я думаю, что ваш селектор неверен. Попробуйте это вместо этого?

result.DocumentNode.SelectSingleNode("//table/tr[1]")
person Evgeny Lukashevich    schedule 22.11.2012