Convert Html to plain text with .net core
本问题已经有最佳答案,请猛点这里访问。
如果将通过电子邮件发送HTML,则还必须附加替代纯文本。 (至少某些垃圾邮件检测软件会检查纯文本替代方法)如何将HTML转换为纯文本?
1 2 3 | HtmlDocument document = new HtmlDocument(); document.Load(htmlBody); string plainBody = document.DocumentNode.InnerText; |
将返回纯文本,但所有链接都将丢失。
例如:
HTML版本
1 | Hello World |
应导致
1 | Hello World (#) |
但是会导致
1 | Hello World |
据我所知,innertext将获取对象的开始和结束标签之间的文本,而不会获取属性值。
如果要获取属性值,则应自己完成。您可以选择所有标签的href属性值,然后替换内部文本。
更多详细信息,您可以参考以下代码:
我使用了HtmlAgilityPack软件包,您可以使用Nugetpackage进行安装:https://www.nuget.org/packages/HtmlAgilityPack/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var doc = new HtmlDocument(); doc.LoadHtml(@"<html><body>textHello World test</body></html>"); var innertext = doc.DocumentNode.InnerText; var nodes = doc.DocumentNode.SelectNodes("//a"); foreach (var item in nodes) { var herf = ((HtmlAttribute)item.Attributes.Where(x => x.Name =="href").FirstOrDefault()).Value; innertext = innertext.Replace(item.InnerText, item.InnerText + string.Format("({0})", herf)); } |
结果: