C# 如何在C中的H1标记之间获取HTML文本#

C# 如何在C中的H1标记之间获取HTML文本#,c#,html,html-agility-pack,C#,Html,Html Agility Pack,我需要解析一个HTML文档来提取所有H1标记以及它们之间的所有HTML。我一直在使用HtmlAgilityPack来实现这一目标,并取得了一些成功。我可以使用以下方法提取所有H1标签: foreach(doc.DocumentNode.SelectNodes(“//h1”)中的HtmlNode节点) 但是如何在每个H1标记之后提取所有HTML,直到找到下一个H1标记?这个HTML可以包含来自表/图像/链接的任何内容,或者HTML页面上除H1标记以外的任何其他内容 提前感谢。可能的解决方案: 获取

我需要解析一个HTML文档来提取所有H1标记以及它们之间的所有HTML。我一直在使用HtmlAgilityPack来实现这一目标,并取得了一些成功。我可以使用以下方法提取所有H1标签:

foreach(doc.DocumentNode.SelectNodes(“//h1”)中的HtmlNode节点)

但是如何在每个H1标记之后提取所有HTML,直到找到下一个H1标记?这个HTML可以包含来自表/图像/链接的任何内容,或者HTML页面上除H1标记以外的任何其他内容

提前感谢。

可能的解决方案: 获取完整的HTML作为字符串,用HTML不知道的符号替换

(例如,HTML使用ü;),然后按此符号将字符串拆分为一个数组

现在,您搜索(以RegEx为例)具有开始和结束标记的节点,并只解析它们

又快又脏,但应该管用


请注意,正如drachenstern所提到的,嵌套的H1标记将导致父节点无法解析。

我认为您正在寻找一种不存在的cookie-cuter解决方案。您不能只选择两个随机元素之间的所有XML元素,我从未听说过任何方法。你可以做的是将NEXTELT与树的行为结合起来,但是你必须考虑H1是嵌套的,所以你不能只得到下一个兄弟元素。<代码> H1 s是不允许嵌套的,因为<代码> H1 s只允许包含内联元素。因此,H1也不允许包含表。虽然不是标准,但建议文档中只有一个H1元素。如果你控制HTML,你应该在解析它之前使它更理智。这能回答你的问题吗?