如何找到此html表中的第六列(例如使用HTML Agility Pack或Regex)?
<tr><td>So, 22.05.16</td><td>1</td><td>D</td><td>E</td><td>190</td><td>DifferentThings</td></tr>
在最后一列中可以存在任何内容,这只是一行中的一行,所以我希望每个条目都包含完整的最后一列。
编辑:
如果有空白
<td></td>
在第6行我总是得到一个
System.NullReferenceException
我现在该怎么办?
innerTextOfLastCell = lastTdCell.InnerText.Trim();
导致错误
编辑:
解决了!
刚输入:
if (lastTdCell != null) //Not lastTdCell.InnerText.Trim()!
{
innerTextOfLastCell = lastTdCell.InnerText.Trim();
s = s + innerTextOfLastCell + "\n";
run.Text = s;
}
else
{
s = s + "\n\n";
run.Text = s;
}
答案 0 :(得分:2)
使用HtmlAgilityPack
,无论表格的列数是多少,这都应该有效。
var html = new HtmlDocument();
html.LoadHtml("<table><tr><td>So, 22.05.16</td><td>1</td><td>D</td><td>E</td><td>190</td><td>DifferentThings</td></tr></table>");
var root = html.DocumentNode;
var tableNodes = root.Descendants("table");
var innerTextOfLastCell = string.Empty;
foreach (var tbs in tableNodes.Select((tbNodes, i) => new { tbNodes = tbNodes, i = i }))
{
var trs = tbs.tbNodes.Descendants("tr");
foreach (var tr in trs.Select((trNodes, j) => new { trNodes = trNodes, j = j }))
{
var tds = tr.trNodes.Descendants("td");
var lastTdCell = tds.LastOrDefault();
innerTextOfLastCell = lastTdCell.InnerText.Trim();
}
}
<强> [编辑] 强>
如果您确实想使用How to get the value from a specific cell C# Html-Agility-Pack中的其他选项,则可以尝试以下代码:
HtmlNode lastTdnode = root.SelectSingleNode("//table[1]/tr[last()]/td[last()]");
这将从第一个 {{1}中的最后 <td>
为您提供最后 <tr>
}
如果你想要第六个单元格,你可以使用这样的东西,但会得到与上面相同的结果:
<table>
如果你想把它混合得更多,你可以试试这个:
HtmlNode sixthTdNode = root.SelectSingleNode("//table[1]/tr[last()]/td[6]");