Le pack d'agilité HTML affiche les attributs href de toutes les ancres sur la page

c# html-agility-pack

Question

J'essaie d'ajouter des liens extraits d'un fichier HTML à une liste CheckBoxList ( cbl_items ).

Cela fonctionne jusqu'à présent, mais au lieu du lien, le nom de l'élément est affiché comme HtmlAgilityPack.HtmlNode. J'ai essayé d'utiliser DocumentElement place de Node mais celui-ci indiquait qu'il n'existe pas ou similaire.

Comment puis-je obtenir l'URL à afficher à la place de HtmlAgilityPack.HtmlNode?

C'est ce que j'ai essayé jusqu'à présent:

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

Réponse acceptée

Vous ajoutez l' objet HtmlNode à la liste CheckBoxList et non la valeur de l'attribut href . Ce que vous voyez est la HtmlNode ToString() HtmlNode car c’est le meilleur que CheckBoxList puisse faire pour afficher cet objet.

Au lieu de cela, vous pouvez utiliser GetAttributeValue(string attribute, string defaultValue) pour récupérer la href attribut 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);
}


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi