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

C# 如何在服务器端将rtf和html转换为纯文本,c#,html,parsing,rtf,text-processing,C#,Html,Parsing,Rtf,Text Processing,我需要处理收到的电子邮件的主体。它们可以是纯文本、HTML和RichText格式。我需要对正文执行文本匹配算法,但是HTML和RichText标记会混淆它们。有没有办法获取纯文本数据 我正在寻找一种可以自动解析这两种格式的方法(比如当我在Total commander中按F3时,它将在HTML和RTF文件中显示文本) 商业解决方案也是一种选择 提前谢谢。对于html,我会使用。比如说, HtmlAgilityPack.HtmlDocument document = new HtmlAgility

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

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

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

提前谢谢。

对于html,我会使用。比如说,

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接口(如和)可以是另一种选择

免责声明:我是这些库的开发人员

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

1 2 3 4 5 6

而不是“123456”

这些

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

        SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
        h.OutputFormat=SautinSoft.HtmlToRtf.eOutputFormat.TextUnicode;
        string text = h.ConvertString(htmlString);
        SautinSoft.RtfToHtml r = new SautinSoft.RtfToHtml();
        r.OutputFormat = SautinSoft.RtfToHtml.eOutputFormat.Text;
        string text = r.ConvertString(rtfString);
示例2-将RTF转换为Unicode文本:

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

这应该不会太难。只要删除HTML和rtf的每一行的开头…你有没有查看过这些文件?我查看过,而且比你想象的要复杂。在HTML中,删除标记只会显示脚本和注释,这是不好的。至于rtf:非英语语言中的重音字符是经过编码的,因此它们必须被解码。