web-dev-qa-db-ja.com

HTML Agility Packは、ページ上のすべてのアンカーのhref属性を取得します

HTMLファイルから抽出したリンクをCheckBoxListcbl_items)。

これまでのところ機能しますが、リンクの代わりに、アイテムの名前はHtmlAgilityPack.HtmlNodeとして表示されます。 DocumentElementの代わりにNodeを使用してみましたが、存在しないか類似していると表示されていました。

HtmlAgilityPack.HtmlNodeの代わりに表示されるURLを取得するにはどうすればよいですか?

これは私がこれまでに試したことです:

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

HtmlNode属性の値ではなく、CheckBoxListhrefobjectを追加しています。表示されているのはHtmlNodeToString()値です。これは、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);
}
24
Ryan Emerle