使用linq填充对象解析html表的列表

时间:2014-02-06 15:15:58

标签: c# html linq html-agility-pack

我有一个像

这样的课程
public class testClass
{
    private string _field1;
    public string Field1
    {
        get { return _field1; }
        set { _field1 = value; }
    }

    private string _field2;
    public string Field2
    {
        get { return _field2; }
        set { _field2 = value; }
    }

    public testClass(f1, f2)
    {
        _field1 = f1;
        _field2 = f2;
    }
}

我需要像记录集一样解析一个简单的html表,为每个testClass创建一个tr对象,其Field1Field2包含{{1}每个InnerText

这样的事情:

td

但我不知道如何做到这一点......

1 个答案:

答案 0 :(得分:1)

当你在linq查询中执行投影时,你应该将行中的值传递给你的类的构造函数:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(HtmlCode);
List<testClass> Results = (from tr in doc.DocumentNode.Descendants("tr")
                select new testClass(
                           tr.Descendants[0].InnerText,
                           tr.Descendants[1].InnerText
                           )).ToList();

以上示例依赖于每行至少有两个单元格的事实。您可能需要进行一些错误检查以确保是这种情况。