c# - HtmlAgilityPack - 如何将数据添加到数组?
问题描述
我正在尝试将数据添加到数组中,但每次尝试添加新数据时,旧数据都会被删除。我有 20 页,该数组并没有添加所有 20 页,而只添加了 1 页。其余的只是被删除。
HtmlNode[] array = null;
for (int i = 0; i <= 10; i++)
{
var doc1 = web.Load(loopingpage);
array = doc1.DocumentNode.SelectNodes("//*[contains(@class, '-row-cp')]").ToArray();
}
数据不会添加到数组中。它只显示当前数据。
解决方案
for
您在这一行的循环中的每次迭代中覆盖数组。
array = doc1.DocumentNode.SelectNodes("//*[contains(@class, '-row-cp')]").ToArray();
您当然可以将节点添加到预定义的数组中,但数组的大小是固定的,因此您需要事先知道有多少节点来分配适当的大小。相反,您可以使用 a List<T>
,它不是固定大小的,更适合您的场景。
// Create a new list of nodes
var nodes = new List<HtmlNode>();
for (var i = 0; i <= 10; i++)
{
var doc1 = web.Load(loopingpage);
var doc1Nodes = doc1.DocumentNode.SelectNodes("//*[contains(@class, '-row-cp')]");
// Add all selected nodes from doc1 to the list
nodes.AddRange(doc1Nodes);
}
// Convert it to an array later if needed
var nodesArray = nodes.ToArray();
推荐阅读
- java - 进行 maven 配置时 setting.xml 和 pom.xml 出了什么问题
- excel - 在不使用范围的情况下创建具有多个系列的条形图
- c++ - 如果未定义的 C++ 行为符合 C 定义的行为会发生什么?
- java - 我不能在我的页面jsp中编写java代码,为什么?
- android - 在 CardStackView 库上膨胀类 androidx.cardview.widget.CardView 时出错
- r - A list of functions? And what good is it for?
- objective-c - Set up interface definitions for a category, if methods of the category are called from another class
- c# - HttpClient.GetAsync(requestUri) not fetching the full content from url
- ruby - Ruby - 不能用另一个替换最后一个范围的元素
- javascript - How to remove certain values from an array object in JavaScript