【问题标题】:Html Agility Pack, iteration on table node not workingHtml Agility Pack,表节点上的迭代不起作用
【发布时间】:2014-10-03 17:15:07
【问题描述】:

我有以下代码,它应该在一个表(页面上的第四个)中遍历所有<td>

foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table").Skip(4).Take(1))
            {
                Console.WriteLine(table.SelectNodes("//table").Count()); // = 5?
                Console.WriteLine(table.SelectNodes("//table").Skip(4).Take(1).Count()); // = 1!

                foreach (var td in table.SelectNodes("//td"))
                {
                   Console.WriteLine(td.InnerText);
                }
            }

由于某种原因,table.SelectNodes("//td") 正在遍历所有五个表 <td>

有什么办法可以纠正这个问题吗?

【问题讨论】:

    标签: c# html html-agility-pack


    【解决方案1】:

    您需要在 XPath 的开头添加单点 (.) 以使其被识别为相对路径(在这种情况下,相对于当前的 table):

    foreach (var td in table.SelectNodes(".//td"))
    {
       Console.WriteLine(td.InnerText);
    }
    

    【讨论】:

    • 完美!我会记住这一点以供将来参考 - 谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 2010-12-24
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2019-12-06
    相关资源
    最近更新 更多