从.NET中的HTML获取纯文本

时间:2011-05-03 13:46:30

标签: .net html string

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

public string GetPlainText(string htmlString)
{
    // any .NET built in utility?
}

提前致谢

6 个答案:

答案 0 :(得分: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;
  

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

答案 1 :(得分:23)

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

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

就个人而言,我发现正则表达式和HttpUtility的组合是最好和最短的解决方案。

Return HttpUtility.HtmlDecode(
                Regex.Replace(HtmlString, "<(.|\n)*?>", "")
                )

这将删除所有标记,然后对&lt;&gt;

等任何额外内容进行解码

答案 4 :(得分:1)

没有.NET内置方法来执行此操作。但是,正如@rudi_visser指出的那样,它可以用正则表达式来完成。

如果您需要删除的不仅仅是标记(例如,将&amp; acirc; 转换为â),您可以使用更详细的解决方案,例如找到{ {3}}

答案 5 :(得分:0)

Erick Petrucelli的答案在Report Builder中为我工作。必须从c#更改为VB,以便报表构建器可以理解。 谢谢