HtmlAgilityPackを使用して特定のDIVの項目のみを選択する

c# html-agility-pack

質問

私はHtmlAgilityPackを使用して、 <div class='content'>として宣言されたdiv内に含まれるページからすべてのリンクを取得しようとしています。ただし、以下のコードを使用すると、 。前に選択したサブノードからSelectNodesを呼び出しているので(これはデバッガで表示されたときにその特定のdivのHTMLのみを表示しているので)、これは本当にわかりません。つまり、SelectNodesを呼び出すたびにルートノードに戻るようなことです。私が使用するコードは以下の通りです:

HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(@"http://example.com");
HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='content']");
foreach(HtmlNode link in node.SelectNodes("//a[@href]"))
{
    Console.WriteLine(link.Value);
}

これは期待される行動ですか?もしそうなら、どうすれば私が期待していることをすることができますか?

受け入れられた回答

これは動作します:

node.SelectNodes("a[@href]")

また、1つのセレクタで実行できます。

doc.DocumentNode.SelectSingleNode("//div[@class='content']//a[@href]")

また、 link.ValueHtmlNodeに定義されていないので、コードはコンパイルされません。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ