You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Html Agility Pack解析表格中指定行的下一行?

嘿,我来帮你搞定用Html Agility Pack获取指定行下一行的需求!

需求回顾

你有这样的HTML表格结构,想要解析出id="data1"那一行的下一行:

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Department</th>
      <th>Gender</th>
    </tr>
  </thead>
  <tbody>
    <tr id="data1"> </tr>
    <tr> </tr> <!-- 这就是我们要获取的目标行 -->
  </tbody>
</table>
解决方案代码

Html Agility Pack提供了很方便的节点定位和遍历方法,直接上可运行的代码示例:

// 初始化HtmlDocument并加载你的HTML内容
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
// 这里替换成你的HTML来源——可以是字符串、文件或者网络请求返回的内容
doc.LoadHtml(yourHtmlContent);

// 第一步:定位到id为data1的行
HtmlNode targetRow = doc.SelectSingleNode("//tr[@id='data1']");

if (targetRow != null)
{
    // 第二步:获取下一个元素节点(用NextElementSibling跳过空白/换行节点)
    HtmlNode nextRow = targetRow.NextElementSibling;

    if (nextRow != null)
    {
        // 这里可以根据需求处理行内容,比如输出整行HTML
        Console.WriteLine(nextRow.OuterHtml);
        
        // 要是想提取单元格文本,就遍历td节点
        foreach (HtmlNode td in nextRow.SelectNodes(".//td") ?? Enumerable.Empty<HtmlNode>())
        {
            Console.WriteLine($"单元格内容:{td.InnerText.Trim()}");
        }
    }
    else
    {
        Console.WriteLine("id为data1的行后面没有其他行啦!");
    }
}
else
{
    Console.WriteLine("找不到id为data1的行哦,请检查HTML结构");
}
关键细节提示
  • 用SelectSingleNode("//tr[@id='data1']")通过XPath精准定位目标行,比遍历节点效率更高
  • 一定要用NextElementSibling而不是NextSibling!因为HTML里的换行、空格会被当作文本节点,NextSibling可能会拿到这些无用节点,而NextElementSibling只会返回下一个元素节点(也就是我们要的tr)
  • 加上null判断很重要,避免找不到节点时抛出空引用异常,让代码更健壮

内容的提问来源于stack exchange,提问作者Pankash Mann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:55:16