2014-09-05 18 views
14

Sto tentando di aggiungere collegamenti estratti da un file HTML a CheckBoxList (cbl_items).HTML Agility Pack ottiene gli attributi href di tutti gli ancore alla pagina

funziona così lontano, ma al posto del link, il nome dell'elemento viene visualizzato come HtmlAgilityPack.HtmlNode. Ho provato ad utilizzare DocumentElement invece di Node ma detto che non esiste o simile.

Come posso ottenere l'URL da visualizzare 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

16

Si sta aggiungendo l'oggettoHtmlNodeal CheckBoxList e non il valore dell'attributo href. Quello che state vedendo è ToString() valore s' il HtmlNode dato che è il meglio che il CheckBoxList può fare per visualizzare tale 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); 
} 
+1

Non dimenticare di tener conto del fatto che 'SelectNodes' (mente-bogglingly) restituisce' null' se nessuno nodi partita. –

Problemi correlati