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

c# html-agility-pack

Вопрос

Я пытаюсь добавить ссылки, извлеченные из файла 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);
}

Принятый ответ

Вы добавляете объект HtmlNode к CheckBoxList а не значение атрибута href . То, что вы видите, это HtmlNode ToString() HtmlNode так как это лучшее, что может сделать 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);
}


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow