C#HTML Agilityパック(not / wrong)ノードコレクションを反復処理する

c# collections foreach html-agility-pack

質問

私はwウェブページからURLをフェッチするためにHTMLアジリティパックを使用しています。 URLは次のとおりです。

http://goo.gl/DqfQl

私は以下のコードを使用して私が望むリンクを得る:

String html = getHtml("http://goo.gl/DqfQl");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(html);

HtmlNodeCollection address_rows = doc.DocumentNode.SelectNodes("//div[@class='name']/a"); 

foreach (HtmlNode row in address_rows)
{
    MessageBox.Show(row.GetAttributeValue("href",LINK_NOT_FOUND));
}

しかし、私はHtmlNodeCollectionを変更して、 class="row'を持つcontaing divを取得し、URLを取得したい場合、常に最初のURLを取得します。

HtmlNodeCollection address_rows = doc.DocumentNode.SelectNodes("//div[@class='row']"); 

foreach (HtmlNode element in address_rows) {
    MessageBox.Show(element.SelectSingleNode("//div[@class='name']/a").GetAttributeValue("href",LINK_NOT_FOUND));
}   

私はこのコードで少し演奏し、しばらくの間、私は働いていると思った。しかし、今私は2番目のコードスニペットを使用して私が望むすべてのURLを選択することはできません。手伝ってくれますか?

受け入れられた回答

あなたはドットを追加する必要があります。 "それ以外の場合は、XPathはノードの内部ではなくDocumentの先頭から一致します。

2番目の文字列を".//div[@class='name']/a"変更するだけで".//div[@class='name']/a"いくはずです



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