我有下表:
<table>
<tr>
<td>Asset: 123499</td>
<td>Unit 3A<br /></td>
<td>12/7/2013</td>
</tr>
<tr>
<tdcolspan=3> </td>
</tr>
<tr>
<td>Asset: 123456</td>
<td>Unit 5</td>
<td>12/7/2013</td>
</tr>
<tr>
<td rowspan=2>Asset: 123457</td>
<td>Unit 8</td>
<td>12/7/2013</td>
</tr>
<tr>
<td>Unit 10</td>
<td>12/7/2013</td>
</tr>
</table>
我需要解析数据。在大多数情况下,每个资产都有一个单位,因此很容易获取数据,但在某些情况下,资产有多个单位,所以我最终得到了资产编号的行数,然后重复下一行的信息。
上表的最后两行是一个例子。我无法弄清楚如何压缩rowspan行,以便获得每行的资产编号和单个单位信息。还有一些空格行使用colspan并且不包含任何数据。
我想将它们从我正在处理的行中排除,但我不知道该怎么做。 以下是我目前使用的代码:
HtmlNode tableDirty = htmlDoc.DocumentNode.SelectNodes("//table").Last();
HtmlNodeCollection rows = tableDirty.SelectNodes("//tr");
foreach (HtmlNode t in rows)
{
HtmlNodeCollection cols = t.SelectNodes(".//td");
int assetNumber;
if (Int32.TryParse(cols[2].InnerHtml, out assetNumber))
{
tableData.Add(new TableData
{
AssetId = cols[0].InnerHtml,
Unit = cols[1].InnerHtml,)
});
}
}