首页 > 解决方案 > 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();
}

数据不会添加到数组中。它只显示当前数据。

标签: c#arrayshtml-agility-pack

解决方案


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();

推荐阅读