когда пытаюсь вывести значения в CheckedListBox значения, на переменную node2 выскакивает ошибка System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта." Не могу понять как исправить.
private void Form1_Load(object sender, EventArgs e)
{
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
HtmlWeb hw = new HtmlWeb();
doc = hw.Load("https://www.atsenergo.ru/nreport?rname=ivr_report_zone&rdate=20180401");
HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//*[@id=\"aid_files_list\"]/table/tbody/tr/td[2]/a");
foreach (var item in nodes2)
{
table.Add(new ReportData() { url = item.Attributes["href"].Value, name = item.InnerHtml });
}
table.All(p => { checkedListBox1.Items.Add(p.name); return true; });
}
SelectNodes
не нашел ни одну node с вашим xpath'ом и вернул вам не пустой массив, а null. В описаниях метода написано это. Вам нужна проверка на null.
HtmlNodeCollection nodes2 = doc.DocumentNode.SelectNodes("//*[@id=\"aid_files_list\"]/table/tbody/tr/td[2]/a");
if (nodes2 == null) return;
Вероятно метод load возвращает пустой документ. Скорее всего нужно дополнительная настройка для HtmlWeb, возможно куки.
HttpClient http = new HttpClient();
var response = await http.GetByteArrayAsync(website);
String source = Encoding.GetEncoding("utf-8").GetString(response, 0, response.Length - 1);
Вам правильно говорят, что надо видеть какой исходный код страницы возвращается, потому что идти по DOM - это не всегда правильное решение. В одном случае оно работает, а в другом нет. Попробуйте такой xpath:
//a[contains(@title, 'Опубликовано')]
или можете так, если хотите сразу получить ссылку
//a[contains(@title, 'Опубликовано')]/@href
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Когда мы производим удаление с помощью Remove range в ef core у нас все выполняется в транзакции? Если, что то не удалится из списка удаляемых объектов...
Есть 2 таблицы: user и transactionСвязь один ко многим (1 пользователь – много транзакций)