如何将rtf和html转换为服务器端的纯文本

时间:2012-08-05 08:01:20

标签: c# html parsing rtf text-processing

我需要处理传入电子邮件的正文。它们可以是纯文本,HTML和RichText格式。我需要在正文上执行文本匹配算法,但HTML和RichText标记会混淆它们。有没有办法获取纯文本数据?

我正在寻找一种可以自动解析两种格式的方式(例如,当我在Total commander中按F3时,它将在HTML和RTF文件中显示文本)。

商业解决方案也是一种选择。

提前致谢。

2 个答案:

答案 0 :(得分:2)

对于html,我会使用HtmlAgilityPack。例如,

HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(html);

foreach(var node in document.DocumentNode.Descendants("script").ToList())
{
    node.Remove();
}

var text = document.DocumentNode.InnerText;

对于rtf,我会将其加载到RichTextBox并保存为文本。

使用IFilter界面(如herehere)可以是另一种选择

答案 1 :(得分:0)

免责声明:我是这些图书馆的开发者

是的,HTML可能包含Unicode符号,例如“& #XXX;”或“& quot;”。另外,例如,如果HTML有一个包含3列和2行的表,最好将此结果看作表格文本:

1 2 3

4 5 6

而不是“1 2 3 4 5 6”。

这些.Net libraries can help you to convert HTML and RTF to Text

示例#1 - 将HTML转换为Unicode文本:

        SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
        h.OutputFormat=SautinSoft.HtmlToRtf.eOutputFormat.TextUnicode;
        string text = h.ConvertString(htmlString);

示例#2 - 将RTF转换为Unicode文本:

        SautinSoft.RtfToHtml r = new SautinSoft.RtfToHtml();
        r.OutputFormat = SautinSoft.RtfToHtml.eOutputFormat.Text;
        string text = r.ConvertString(rtfString);