HtmlAgilityPack与linq一起使用来选择节点

时间:2012-12-03 15:43:00

标签: linq html-agility-pack

我基本上尝试使用htmlagilitypack解析一段html并使用linq将其放入对象中以便与我的其他代码一起使用。我已经得到了两个代码片段,其中#1使用linq并且不起作用,但#2使用for循环并且有效。

除了使用linq之外,两段代码几乎完全相同。从这个意义上说,我想我错过了linq的某些东西,阻止了我的工作?

感谢是否有人可以帮我看看

  1. 使用linq - 它不起作用。 res最终为空

    res = from li in ul.Elements("li").Where(i => GetClass(i) != "titles-h")
    select new Post()
    {
        title = li.Element("h2").InnerText,
        // ....
    };
    
  2. 没有linq - 它有效

    foreach (var li in ul.Elements("li"))
    {
        if (GetClass(li) != "titles-h")
            ress.Add(new Post()
              {
                  title = li.Element("h2").InnerText,
                 // ....
              });
    }
    
  3. 实现GetClass

    static string GetClass(HtmlNode n)
    {
        if (n.Attributes["class"] != null)
            return n.Attributes["class"].Value;
        else
            return "";
    }
    

0 个答案:

没有答案