htmllagilitypack跳过HTML表格标题

本文关键字:标题 表格 HTML 跳过 htmllagilitypack | 更新日期: 2023-09-27 18:17:25

我有一个像下面这样的html表格:

<table>
    <caption>Table 2</caption>
    <tr><td>hd1</td><td>hd2</td></tr>
    <tr><td>val01</td><td>val02</td></tr>
    <tr>
        <td colspan="2">
            <table>
                <caption>Subtable 2</caption>
                <tr><td>subval01</td><td>subval02</td></tr>
            </table>
        </td>
    </tr>
</table>

编辑下面是我的代码:

            foreach (HtmlNode rows in htmltable.SelectNodes("tr"))
            {
                DataRow dr = dt.NewRow();
                int iRow = 0;
                if (!rows.InnerHtml.Contains("<caption>"))
                {
                    foreach (HtmlNode cell in rows.SelectNodes("td"))
                    {
                        iRow++;
                        dr[iRow] = cell.InnerText;
                    }
                }
                dt.Rows.Add(dr);
            }

我的代码识别<caption>作为行并选择它。我不明白如何在解析时跳过标题。所以我只能解析行。Skip(1)方法不适合我

htmllagilitypack跳过HTML表格标题

如果我理解正确,您要跳过具有后代节点<caption><tr>(外部<table>标记内的最后一个<tr>)。在本例中,我们可以使用XPath只选择没有<caption><tr>,如下所示:

foreach (HtmlNode rows in htmltable.SelectNodes("tr[not(.//caption)]"))
{
    DataRow dr = dt.NewRow();
    .....
    .....
    dt.Rows.Add(dr);
}