html의 <body>
에있는 모든 텍스트를 추출해야한다는 요구 사항이 있습니다. 샘플 HTML 입력 : -
<html>
<title>title</title>
<body>
<h1> This is a big title.</h1>
How are doing you?
<h3> I am fine </h3>
<img src="abc.jpg"/>
</body>
</html>
출력은 다음과 같아야합니다.
This is a big title. How are doing you? I am fine
이 목적으로 만 HtmlAgility를 사용하고 싶습니다. 정규 표현식을 사용하지 마십시오.
HtmlDocument를로드하고 '// body'와 같은 xquery를 사용하여 본문 내용을 가져 오는 방법을 알고 있습니다. 하지만 내가 출력물에서 보여준 것처럼 html을 제거하는 방법은 무엇입니까?
미리 감사드립니다 :)
본문의 InnerText
:
string html = @"
<html>
<title>title</title>
<body>
<h1> This is a big title.</h1>
How are doing you?
<h3> I am fine </h3>
<img src=""abc.jpg""/>
</body>
</html>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
string text = doc.DocumentNode.SelectSingleNode("//body").InnerText;
다음으로 공백과 새 줄을 접을 수 있습니다.
text = Regex.Replace(text, @"\s+", " ").Trim();
그러나이 경우에 작동하는 동안 hello<br>world
또는 hello<i>world</i>
와 같은 마크 업은 InnerText
에 의해 helloworld
로 변환되어 태그가 제거됩니다. 마크 업뿐만 아니라 디스플레이가 CSS에 의해 결정되므로이 문제를 해결하는 것은 어렵습니다.