从.NET中的HTML获取纯文本

Dan*_*lba 23 .net html string

从HTML字符串中获取纯文本字符串的最佳方法是什么?

public string GetPlainText(string htmlString)
{
    // any .NET built in utility?
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

Ale*_* K. 37

您可以使用MSHTML,这可能非常宽容;

//using microsoft.mshtml
HTMLDocument htmldoc = new HTMLDocument();
IHTMLDocument2 htmldoc2 = (IHTMLDocument2)htmldoc;
htmldoc2.write(new object[] { "<p>Plateau <i>of<i> <b>Leng</b><hr /><b erp=\"arp\">2 sugars please</b> <xxx>what? &amp; who?" });

string txt = htmldoc2.body.outerText;
Run Code Online (Sandbox Code Playgroud)

冷2糖的高原请问什么?& 谁?


Rud*_*ser 23

据我所知,没有内置实用程序,但根据您的要求,您可以使用正则表达式去除所有标记:

string htmlString = @"<p>I'm HTML!</p>";
Regex.Replace(htmlString, @"<(.|\n)*?>", "");
Run Code Online (Sandbox Code Playgroud)

  • 检查这个史诗般的问题http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags (5认同)
  • /我去躲藏 (3认同)
  • 正则表达式仍未产生最终结果.你需要转换*至少*`&lt;`,`&gt;`和`&amp;`.如果您的文本包含其他HTML字符实体,如`&scaron;`(š),您还需要解码所有这些实体. (2认同)

Ale*_*lex 6

框架中没有内置解决方案.

如果您需要解析HTML,我使用名为HTML Agility Pack的库获得了很好的体验.
它解析HTML文件并通过DOM提供对它的访问,类似于XML类.