c# - 如何解析这段HTML?

标签 c# html html-agility-pack

早上好! 我正在使用 c#(框架 3.5sp1)并希望通过正则表达式解析以下 html 片段:

<h1>My caption</h1>
<p>Here will be some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

我需要以下输出:

  • 第1组:h1的内容
  • 第 2 组:h1 后面的文本的内容
  • 第 3-n 组:字幕内容 + 文本

我有什么atm:

<hr.*?/>
<h2.*?>(.*?)</h2>
([\W\S]*?)
<hr.*?/>

由于尾​​随 <hr/>,这将给我所有奇怪的子标题 + 内容(例如 1、3、...) .为了解析 h1-caption,我有另一个模式 ( <h1.*?>(.*?)</h1> ),它只给我标题而不是内容 - 我对那个 atm 没意见。

有没有人给我提示/解决方案或任何替代逻辑(例如,通过阅读器解析 html 并以这种方式分配它?)?

编辑:
正如一些人带来的HTMLAgilityPack ,我很好奇这个好工具。我完成了获取 <h1> 的内容-标签。
但是......我的问题是解析其余部分。这是由以下原因引起的:内容标签可能不同 - 从 <p><div><ul> ... atm 这似乎或多或少地遍历整个文档并为标签解析标签......? 有什么提示吗?

最佳答案

你真的需要HTML parser为此

关于c# - 如何解析这段HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2091645/

相关文章:

c# - 从具有特定类名的元素中选择值

c# - 将 Xml 转换为字符串。每个标签换行?

c# - C# 中的 slider 缩放不正确

javascript - 用于了解 HTML5 视频何时准备好在没有黑色背景的情况下播放的事件

html - 如何在选择输入中表示分层数据?

c# - 如何使用 HTMLAgilityPack 写出解码后的 HTML?

c# - 如何在不指定节点名称的情况下遍历所有节点

javascript - 在我的 asp.net 项目中调用 Webapi 时出错

c# - 在 C# 中使用 TimeSpans 计算平均时间

javascript - 显示隐藏 <li> 元素