HTML Agility Pack obtiene todos los atributos href de los anclajes en la página

c# html-agility-pack

Pregunta

Estoy tratando de agregar enlaces extraídos de un archivo HTML a un CheckBoxList ( cbl_items ).

Funciona hasta ahora, pero en lugar del enlace, el nombre del elemento se muestra como HtmlAgilityPack.HtmlNode. Intenté usar DocumentElement lugar de Node pero dijo que no existe o similar.

¿Cómo puedo obtener la URL que se mostrará en lugar de HtmlAgilityPack.HtmlNode?

Esto es lo que he intentado hasta ahora:

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

Respuesta aceptada

Está agregando el objeto HtmlNode a CheckBoxList y no el valor del atributo href . Lo que está viendo es el HtmlNode ToString() , ya que es lo mejor que puede hacer el CheckBoxList para mostrar ese objeto.

En su lugar, puede usar GetAttributeValue(string attribute, string defaultValue) para recuperar el valor del atributo 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);
}



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué