이 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-following text의 내용
  • 그룹 3-n : 서브 캡션 + 텍스트의 내용

내가 가지고있는 것 :

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

이것은 후미 <hr/> 때문에 모든 홀수 하위 + 내용 (예 : 1, 3, ...)을 줄 것입니다. h1-caption을 구문 분석하기 위해 나는 다른 패턴 ( <h1.*?>(.*?)</h1> )을 가지고 있는데, 이는 단지 캡션을 제공하지만 내용은 제공하지 않는다.

아무도 나 또는 다른 논리에 대한 힌트 / 솔루션을 가지고 (예 : 독자가 HTML을 파싱하고 이런 식으로 할당하는 등)?

편집하다:
일부는 HTMLAgilityPack을 가져 왔기 때문에이 멋진 도구에 대해 궁금해했습니다. 나는 <h1> 태그의 내용을 얻는 것을 성취했습니다.
하지만 ... 흠집 때문에 나머지는 파싱됩니다. 이는 다음과 같은 이유로 발생합니다 : <p> 에서 <div><ul> ... atm까지 내용에 대한 태그가 다를 수 있습니다. 전체 문서와 태그에 대한 구문 분석 태그에서 반복되는 것처럼 보입니다. 어떤 힌트?

수락 된 답변

이 경우 HTML 파서가 필요합니다.


인기 답변

정규식을 사용하여 HTML을 구문 분석하지 마십시오. HTML 민첩성 팩 사용을 고려하십시오.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.