C# HtmlAgilityPack 从特定的 h2 中选择表格

标签 c# html parsing html-agility-pack

我有一些 html:

<h2>Results</h2>
 <div class="box">
 <table class="tFormat">
      <th>Head</th>
      <tr>1</tr>
 </table>
</div>

<h2>Grades</h2>
 <div class="box">
 <table class="tFormat">
      <th>Head</th>
      <tr>1</tr>
 </table>
</div>

我想知道如何获得“结果”下的表格

我试过:

        var nodes = doc.DocumentNode.SelectNodes("//h2");

        foreach (var o in nodes)
        {
            if (o.InnerText.Equals("Results"))
            {
                foreach (var c in o.SelectNodes("//table"))
                {
                    Console.WriteLine(c.InnerText);             
                }
            }
        }

它有效,但它也得到了 Grades h2 下的表格

最佳答案

请注意,div 不在标题内分层,因此在那里查找它没有意义。

这对您有用 - 它会找到标题后的下一个元素:

if (o.InnerText.Equals("Results"))
{
    var nextDiv = o.NextSibling;
    while (nextDiv != null && nextDiv.NodeType != HtmlNodeType.Element)
        nextDiv = nextDiv.NextSibling;
    // nextDiv should be correct here.
}

您还可以编写更具体的 xpath 来查找该 div:

doc.DocumentNode.SelectNodes("//h2[text()='Results']/following-sibling::div[1]");

关于C# HtmlAgilityPack 从特定的 h2 中选择表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040724/

相关文章:

c# - 实体中的 NHibernate 辅助属性

c# - 解析测量单位

c# - 如何在运行时加载 Blazor 页面?

java - HTML重定向

javascript - 如何使用javascript更改html选择器的宽度

html - 如何将此幻灯片移动到页面的中心(水平)?

c - 某些脚本语言的算术运算

java - 在java中解析文本文件,如何删除 ""

c# - 从 C# 应用程序内部存储空整数值

c# - 使用 WPF 中文本框的 KeyDown 事件捕获 Ctrl-X