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

如何从本地HTML文件中按指定ID解析table并解决输出全部表格问题

问题原因

代码中XPath语法使用错误:table.SelectNodes("//tr") 里的//是全局定位符,会从整个HTML文档根节点匹配所有<tr>元素,不会限定在当前匹配到的formTbl表格范围内,因此会输出所有表格的内容。

修正方案

1. 基础修复(仅修改错误的XPath)

把table.SelectNodes("//tr")改为table.SelectNodes(".//tr"),开头加.代表从当前选中的表格节点开始向下搜索,就不会拿到其他表格的行。

2. 适配目标表格结构的优化代码

你的目标表格只有2行,第一行存列名、第二行存对应值,无需遍历所有表格,可直接定位目标表格简化逻辑:

var url = @"C:\Users\name\Plocha\web.html";
var doc = new HtmlDocument();
doc.Load(url);

// 直接定位ID为formTbl的表格,无需遍历所有表格
HtmlNode targetTable = doc.DocumentNode.SelectSingleNode("//table[@id='formTbl']");
if (targetTable != null)
{
    // 取表格下的所有行
    var rows = targetTable.SelectNodes(".//tr");
    if (rows.Count >= 2)
    {
        // 第一行是列名,第二行是对应值
        var colNames = rows[0].SelectNodes(".//td");
        var colValues = rows[1].SelectNodes(".//td");
        // 逐列输出对应关系
        for (int i = 0; i < colNames.Count; i++)
        {
            Console.WriteLine($"Column:{colNames[i].InnerText.Trim()} Row:{colValues[i].InnerText.Trim()}");
        }
    }
}
else
{
    Console.WriteLine("未找到ID为formTbl的表格");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:39:01