2010-10-11 117 views
0

我需要解析HTML文档以提取所有H1标签和它们之间的所有HTML标签。我一直在玩HtmlAgilityPack,取得了一些成功。我可以用提取所有H1标签:如何获取C#中H1标签之间的HTML文本

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//h1"))

但我怎么提取所有的HTML每H1标签后,直到我打接下来的H1标签?这个HTML可以包含任何来自表格/图片/链接或HTML页面上的任何其他东西,但H1标签。

在此先感谢。

+0

我认为你正在寻找一种不存在的饼干刀具解决方案。你不能只选择两个随机元素之间的所有XML元素,而不能选择任何我听说过的方法。你可以做的是NextElement与树行为行为的某种组合,但你必须考虑H1可以嵌套,所以你不能只获得下一个兄弟元素。 – jcolebrand 2010-10-12 00:01:39

+0

'H1'不允许嵌套,因为'H1'只允许包含内联元素。因此H1也不允许包含表格。尽管不是标准,但建议文档中只有* 1个* H1元素。如果你控制HTML,你应该在解析它之前使它更多,呃,* sane *。 – 2010-10-12 00:21:09

回答

1

可能的解决方案: 获取完整的HTML字符串,带符号HTML替换< H1>不知道(例如ü,HTML使用& uuml;),然后由该符号分割字符串到一个数组。

现在您搜索(以RegEx为例)具有开始AND结束标记并仅解析这些结点的节点。

快速和肮脏,但应该工作。

请注意,正如drachenstern提到的,嵌套的H1-Tags会导致父节点不被解析。

相关问题