HTML Agility Pack получает все атрибуты href для якорей на странице

Я пытаюсь добавить ссылки, извлеченные из файла HTML, в CheckBoxList (cbl_items).

Он работает до сих пор, но вместо ссылки имя элемента отображается как HtmlAgilityPack.HtmlNode. Я попытался использовать DocumentElement вместо Node, но он сказал, что он не существует и не похож.

Как я могу отобразить URL-адрес вместо HtmlAgilityPack.HtmlNode?

Это то, что я пробовал до сих пор:

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc = hw.Load(tb_url.Text);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
  cbl_items.Items.Add(link);
}

Ответы

Ответ 1

Вы добавляете объект HtmlNode к CheckBoxList, а не к атрибуту href. То, что вы видите, это значение HtmlNode ToString(), так как это лучшее, что может сделать CheckBoxList для отображения этого объекта.

Вместо этого вы можете использовать GetAttributeValue(string attribute, string defaultValue) для получения значения атрибута href.

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc = hw.Load(tb_url.Text);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
    // Get the value of the HREF attribute
    string hrefValue = link.GetAttributeValue( "href", string.Empty );
    cbl_items.Items.Add(hrefValue);
}