Comment analyser ce morceau de HTML?

c# html html-agility-pack

Question

Bonjour! J'utilise c # (framework 3.5sp1) et je veux analyser le morceau de code HTML suivant via regex:

<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>

J'ai besoin de la sortie suivante:

  • groupe 1: contenu de h1
  • groupe 2: contenu du texte suivant h1
  • groupe 3-n: contenu des sous-titres + texte

ce que j'ai atm:

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

cela me donnera tous les sous-titres impairs + contenu (par exemple 1, 3, ...) en raison du <hr/> final. pour analyser la légende h1, j’ai un autre modèle ( <h1.*?>(.*?)</h1> ), qui ne me donne que la légende mais pas le contenu - ça me va.

Quelqu'un a-t-il un indice / une solution pour moi ou une autre logique (par exemple, analyser le code HTML via un lecteur et l'assigner de cette façon?)?

modifier:
comme certains ont apporté HTMLAgilityPack , j'étais curieux de connaître ce bel outil. J'ai réussi à obtenir le contenu de la <h1> .
mais ... mon problème est d'analyser le reste. ceci est causé par: les balises pour le contenu peuvent varier - de <p> à <div> et <ul> ... atm, cela semble plus ou moins itérer sur l'ensemble du document et sur l'analyse des balises pour balises ...? des allusions?

Réponse acceptée

Vous aurez vraiment besoin d'un analyseur HTML pour cela


Réponse populaire

N'utilisez pas regex pour analyser le HTML. Pensez à utiliser le pack d'agilité HTML .



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi