0

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

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

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

提前致谢。

4

2 回答 2

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

于 2012-08-05T09:04:24.310 回答
0

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

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

1 2 3

4 5 6

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

这些.Net 库可以帮助您将 HTML 和 RTF 转换为 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);
于 2012-08-23T07:18:03.697 回答