HTML Agility Pack ottiene gli attributi href di tutti gli ancore sulla pagina

c# html-agility-pack

Domanda

Sto cercando di aggiungere link estratti da un file HTML a un CheckBoxList ( cbl_items ).

Funziona così lontano, ma invece del link, il nome dell'oggetto viene visualizzato come HtmlAgilityPack.HtmlNode. Ho provato a utilizzare DocumentElement invece di Node ma ha detto che non esiste o simile.

Come posso visualizzare l'URL al posto di HtmlAgilityPack.HtmlNode?

Questo è quello che ho provato finora:

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);
}

Risposta accettata

Stai aggiungendo l' oggetto HtmlNode a CheckBoxList e non il valore dell'attributo href . Quello che stai vedendo è il HtmlNode ToString() HtmlNode poiché è il migliore che CheckBoxList può fare per visualizzare quell'oggetto.

Invece, è possibile utilizzare GetAttributeValue(string attribute, string defaultValue) per recuperare il valore dell'attributo 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);
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché