【问题标题】:Get the node type based on text根据文本获取节点类型
【发布时间】:2013-11-21 06:08:15
【问题描述】:

我有一个 HTML 结构,我想在其中查找基于文本的标记类型,即包含诸如“课程内容”之类的字符串的标记。我有以下 HTML 结构:

<tr>
    <td colspan="2">
        <h3>
            Course Contents
        </h3>
    </td>
</tr>

这是我的代码:

HtmlNode ContentNode = CourseDoc.DocumentNode.Descendants().Where((n => n.InnerText.Trim().ToLower() == "course contents")).FirstOrDefault();

那么,我怎样才能得到包含字符串的h3标签呢?

此外,我想在此 HTML 下方找到类似的 h3 标记。这是一个例子:

 <tr>
        <td colspan="2">
            <h3>
                Course Contents
            </h3>
        </td>
       <td>
         abc
       </td>
    </tr>
 <tr>
        <td colspan="2">
            <h3>
                Course Outline
            </h3>
        </td>
    </tr>

当我找到第一个 h3 标签时,然后通过代码找到第二个 h3 标签,并检索这些标签之间的 HTML。

【问题讨论】:

  • “这些标签之间的 HTML”是什么意思?你想要&lt;td&gt;abc&lt;/td&gt; 还是别的什么?
  • 我的意思是一开始我找到了h3标签,现在如果我得到另一个h3标签,那么我想检索这些(h3)标签之间的html。如果未找到第二个 h3 标签,则检索第一个 h3 标签下的所有 html。

标签: c# html-agility-pack


【解决方案1】:

如果您使用InnerHtml 而不是InnerText,您在查询中选择的节点将是&lt;h3&gt; 标签:

HtmlNode ContentNode = CourseDoc.DocumentNode.Descendants().Where((n => n.InnerHtml.Trim().ToLower() == "course contents")).FirstOrDefault();

【讨论】:

  • 是的,成功了 :-) 以及如何在此标签下方找到类似类型的标签?像这样是h3标签,我想在这个标签后面找到类似的h3标签。
  • 您需要使用更大的 HTML 示例更新您的问题,以便我更清楚地了解您的意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 2010-10-30
  • 1970-01-01
  • 2021-08-24
相关资源
最近更新 更多