我需要处理传入电子邮件的正文。它们可以是纯文本,HTML和RichText格式。我需要在正文上执行文本匹配算法,但HTML和RichText标记会混淆它们。有没有办法获取纯文本数据?
我正在寻找一种可以自动解析两种格式的方式(例如,当我在Total commander中按F3时,它将在HTML和RTF文件中显示文本)。
商业解决方案也是一种选择。
提前致谢。
答案 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并保存为文本。
答案 1 :(得分:0)
免责声明:我是这些图书馆的开发者
是的,HTML可能包含Unicode符号,例如“& #XXX;”或“& quot;”。另外,例如,如果HTML有一个包含3列和2行的表,最好将此结果看作表格文本:
1 2 34 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);