Вы можете использовать тело 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, а не только разметкой.