在以下HTML中,我可以解析table
元素,但我不知道如何跳过th
元素。
我想只获取td
元素,但是当我尝试使用时:
foreach (HtmlNode cell in row.SelectNodes("td"))
......我得到了一个例外。
<table class="tab03">
<tbody>
<tr>
<th class="right" rowspan="2">first</th>
</tr>
<tr>
<th class="right">lp</th>
<th class="right">name</th>
</tr>
<tr>
<td class="right">1</td>
<td class="left">house</td>
</tr>
<tr>
<th class="right" rowspan="2">Second</th>
</tr>
<tr>
<td class="right">2</td>
<td class="left">door</td>
</tr>
</tbody>
</table>
我的代码:
var document = doc.DocumentNode.SelectNodes("//table");
string store = "";
if (document != null)
{
foreach (HtmlNode table in document)
{
if (table != null)
{
foreach (HtmlNode row in table.SelectNodes("tr"))
{
store = "";
foreach (HtmlNode cell in row.SelectNodes("th|td"))
{
store = store + cell.InnerText+"|";
}
sw.Write(store );
sw.WriteLine();
}
}
}
}
sw.Flush();
sw.Close();
答案 0 :(得分:3)
您的XPath语法不正确。请尝试:
HtmlNode cell in row.SelectNodes("//td")
这将为您提供可以使用td
进行迭代的foreach
元素集合。
答案 1 :(得分:3)
此方法使用LINQ查询名称为HtmlNode
的{{1}}个实例。
我还注意到您的输出显示为td
(带有尾随管道),此示例使用val|val|
作为删除该尾随管道的一种不太可怕的方法:string.Join(pipe, array)
。
val|val