c# - 重复循环不会遍历所有元素
问题描述
我在节点集合中使用重复循环,但是输出并且始终是 foreach 的第一个输入...
var all_accounts_elements = content.GetCollectionNode(
"//div[@class='box-list-item text-c js-list-item']");
foreach (HtmlNode account_element in all_accounts_elements)
{
//for debug only
var copy = account_element;
var account = new InstagramAccount();
//for debug only
var debug = copy.SelectSingleNode("//*[@class='title']");
Debug.WriteLine(debug.InnerText);
account.AccountName = account_element.SelectSingleNode("//*[@class='title']")
.InnerText.ToTilteCase().Trim();
account.AddedData = account_element.SelectSingleNode("//*[@class='sub']")
.InnerText.Trim();
account.Edit = account_element.SelectSingleNode("//*[@class='context-menu']")
.InnerText.Trim();
account.Message = account_element.SelectSingleNode("//*[@class='quick-info']")
.InnerText.Trim();
accountsList.Add(account);
}
输出:
jonisbarcelos
jonisbarcelos
解决方案
您的 XPath 选择器告诉 HTMLAgilityPack 查看整个文档。尝试查看后代:
account.AccountName = account_element.SelectSingleNode("descendant::div[@class='title']")
.InnerText.ToTilteCase().Trim();
account.AddedData = account_element.SelectSingleNode("descendant::div[@class='sub']")
.InnerText.Trim();
account.Edit = account_element.SelectSingleNode("descendant::div[@class='context-menu']")
.InnerText.Trim();
account.Message = account_element.SelectSingleNode("descendant::div[@class='quick-info']")
.InnerText.Trim();
推荐阅读
- angular - Angular - 如何在下拉菜单中选择值?
- validation - 为什么当数据中缺少字段时,“notEmpty”规则不适用?
- ejabberd - 我想要 Erling 代码来确定访客昵称的长度
- google-sheets - 过滤从站点导入的日期
- rest - Wildfly 10:ear、ejbs 和 restful-services
- react-native - 使用 Yarn 工作区/nohoist 时,如何控制 Yarn 为依赖项的 peerDependency 选择哪个版本?
- postgresql - Postgres - 多个数据库的 RDS 副本到由模式分隔的单个数据库(数据库名称)
- java - servlet appServlet 的消息 Servlet.init() 抛出异常
- php - 如何将数组传递给 PHP 中的函数
- reactjs - 我收到有关 React 中目标库的错误