Как разобрать этот кусок HTML?

c# html html-agility-pack

Вопрос

доброе утро! Я использую c # (framework 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:

<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, 3, ...) из-за конечного <hr/> . для разбора h1-caption у меня есть другой шаблон ( <h1.*?>(.*?)</h1> ), который дает мне заголовок, но не содержание - я в порядке с этим атмом.

у кого-нибудь есть подсказка / решение для меня или любых альтернативных логик (например, разбор html через считыватель и назначение его таким образом?)?

редактировать:
как некоторые принесли в HTMLAgilityPack , мне было любопытно об этом приятном инструменте. я достиг уровня содержимого <h1> -tag.
но ... myproblem анализирует остальные. это вызвано: теги для содержимого могут различаться - от <p> до <div> и <ul> ... atm это кажется более или менее итерацией по всему документу и синтаксическому тегу для тега ...? любые подсказки?

Принятый ответ

Вам действительно понадобится HTML-парсер для этого


Популярные ответы

Не используйте регулярное выражение для анализа HTML. Подумайте об использовании пакета Agility Pack .




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему