首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# HTML敏捷包(错误/错误)迭代节点集合

C# HTML敏捷包(错误/错误)迭代节点集合
EN

Stack Overflow用户
提问于 2012-08-09 04:46:16
回答 1查看 4.4K关注 0票数 4

我使用HTML Agility Pack从w网页获取URL。URL为:

http://goo.gl/DqfQl

如果我使用下面的代码,我会得到我想要的链接:

代码语言:javascript
复制
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'div,并且想要获取URL时,我总是得到第一个URL。

代码语言:javascript
复制
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));
}   

我尝试了一下这段代码,有一段时间我认为我成功了。但是现在我不能使用第二个代码片段来选择我想要的所有URL。你能帮上忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-09 04:50:33

你必须加一个点“。到XPath,否则它将从文档开头匹配,而不是在节点内部匹配。

只需将第二个字符串更改为".//div[@class='name']/a",它就应该可以工作了

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11872901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档