使用colspan =" 2"获取所有td标签进入清单

时间:2015-06-30 06:35:32

标签: c# html html-agility-pack

我需要将HTML-page中的所有td标记提取到列表中。

我需要按colspan="2"过滤结果。

这就是我迄今为止使用HTML敏捷包所做的。不幸的是它不起作用。

var tdList = from d in doc.DocumentNode.Descendants()
             where d.Name == "td" &&  d.Attributes["colspan"].Value == "2"
             select d;

1 个答案:

答案 0 :(得分:1)

您可以使用简单的XPath表达式:

string source = @"<html>
    <body>
        <div>
            <table>
                <tr>
                    <td colspan='1' id='td1'>no</td>
                    <td colspan='2' id='td2'>yes1</td>
                    <td colspan='2' id='td3'>yes2</td>
                    <td colspan='2' id='td4'>yes3</td>
                    <td colspan='1' id='td5'>no</td>
                </tr>
            </table>
        </div>
    </body>
</html>";

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(source);
var nodes = doc.DocumentNode.SelectNodes("//td[@colspan='2']");
nodes.Select(x=> x.InnerText).Dump();

输出:

  

是1是2是3

LinqPad Demo

修改 我刚刚测试了你的代码,它与我的虚拟源数据文档工作得很好。如果出现任何其他故障,您应该正确编辑并重新提出问题。