C# 用C解析HTML表并保存在数组中
我有一个HTML页面,可以包含许多表。一些表可以放在另一个表中。我需要一个C代码来自动读取和解析所有现有的表数据,并将它们保存到数组列表中,不包括表头值 以下是我目前使用HtmlAgilityPack的代码:C# 用C解析HTML表并保存在数组中,c#,string-parsing,C#,String Parsing,我有一个HTML页面,可以包含许多表。一些表可以放在另一个表中。我需要一个C代码来自动读取和解析所有现有的表数据,并将它们保存到数组列表中,不包括表头值 以下是我目前使用HtmlAgilityPack的代码: 该错误意味着您的代码假定某些内容不是空的,而实际上它是空的。所以哪一个对象为null?可能有些表有tbody,因此选择tr作为表的后代会导致null?另外,您的代码不是很健壮,您跳过了硬编码的第一行(假设它是标题行),因此您没有考虑空表。我编辑了我的问题并添加了我的表。所有单元格都有一个值
该错误意味着您的代码假定某些内容不是空的,而实际上它是空的。所以哪一个对象为null?可能有些表有tbody,因此选择tr作为表的后代会导致null?另外,您的代码不是很健壮,您跳过了硬编码的第一行(假设它是标题行),因此您没有考虑空表。我编辑了我的问题并添加了我的表。所有单元格都有一个值。
string strFilepath = @"filepath\index.html";
if (System.IO.File.Exists(strFilepath))
{
lblValues.Text = "exists";
//
HtmlDocument hdoc = new HtmlDocument();
hdoc.LoadHtml(strFilepath);
List<List<string>> table = hdoc.DocumentNode.SelectNodes("//table").Descendants("tr").Skip(1)
.Where(tr => tr.Elements("td").Count() > 1)
.Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
.ToList();
//
}
else
{ lblValues.Text = "error"; }
<table>
<thead><tr><th>header1</th><th>header2</th><th>header3</th></tr></thead>
<tr><td>value01</td><td>value02</td><td>value03</td></tr>
<tr><td>value11</td><td>value12</td><td>value13</td></tr>
</table>