在.NET开发中,将 HTML 转换为纯文本是一项常见任务,无论是需要从网页提取内容、处理 HTML 邮件,还是生成轻量级文本报告。然而,HTML 的丰富格式、标签和结构元素可能会使需要干净、无格式文本的工作流程变得复杂。这就是为什么常常需要通过C# 将 HTML 转换为 TXT 文本。
Spire.Doc for .NET 简化了这一过程:它是一个强大的文档操作库,原生支持加载 HTML 文件/字符串并将其转换为干净的纯文本。本文将探讨如何使用该库在 C# 中将 HTML 转换为纯文本,包括对两个核心场景的详细分析:转换HTML字符串(内存中的内容)和HTML文件(基于磁盘的内容)。
为什么选择 Spire.Doc?
Spire.Doc 是一个强大的文档操作库,特别适合 HTML 到文本的转换:
- 代码简介:只需最少的代码行即可处理、转换 HTML 文档。
- 结构保留:在输出文本中保持逻辑格式(换行、列表缩进)。
- 特殊字符支持:自动将HTML字符转换为其纯文本等效形式。
- 轻量级:避免繁重的依赖项,使其适用于桌面和Web应用程序。
安装 Spire.Doc
Spire.Doc可通过NuGet获取,这是管理依赖项的最简单方法:
- 在Visual Studio中,右键单击您的项目>管理NuGet包。
- 搜索 “Spire.Doc” 并安装最新的稳定版本。
- 或者,使用包管理器控制台:
Install-Package Spire.Doc
C# 将 HTML 字符串转换为文本
本示例将 HTML 字符串渲染到 Document
对象中,然后使用 SaveToFile()
将其保存为纯文本文件。
using Spire.Doc;
using Spire.Doc.Documents;
namespace HtmlToText
{
class Program
{
static void Main(string[] args)
{
// 定义HTML内容
string htmlContent = @"
<html>
<body>
<h1>示例HTML内容</h1>
<p>这是一个包含<strong>粗体</strong>和<em>斜体</em>文本的段落。</p>
<p>另一行带有<a href='https://example.com'>链接</a>。</p>
<ul>
<li>列表项1</li>
<li>列表项2(带有<em>斜体</em>文本)</li>
</ul>
<p>特殊字符:© & ®</p>
</body>
</html>";
// 创建Document对象
Document doc = new Document();
// 添加一个节来容纳内容
Section section = doc.AddSection();
// 添加一个段落
Paragraph paragraph = section.AddParagraph();
// 将HTML渲染到段落中
paragraph.AppendHTML(htmlContent);
// 保存为纯文本
doc.SaveToFile("Html字符串转文本.txt", FileFormat.Txt);
}
}
}
关键步骤:
- HTML 字符串定义:该示例定义了一个HTML字符串,其中包含标题、段落、格式标签(
<strong>
、<em>
)、链接、列表和特殊字符。 - 文档设置:创建一个
Document
对象来管理内容,并使用Section
和Paragraph
构建HTML渲染的结构。 - HTML 渲染:
AppendHTML()
解析HTML字符串并将其转换为文档的内部结构,保留内容层次结构。 - 文本转换:
SaveToFile()
将渲染的内容转换为纯文本,剥离HTML标签同时保留可读的结构。
输出:
C# 将 HTML 文件转换为文本
本示例直接加载 HTML 文件并将其转换为文本。适用于批处理或处理现有 HTML 文档(例如,下载的网页、本地模板)。
using Spire.Doc;
using Spire.Doc.Documents;
namespace HtmlToText
{
class Program
{
static void Main()
{
// 创建Document对象
Document doc = new Document();
// 加载HTML文件
doc.LoadFromFile("E:\\sample.html", FileFormat.Html, XHTMLValidationType.None);
// 将HTML转换为纯文本
doc.SaveToFile("HTMLtoText.txt", FileFormat.Txt);
doc.Dispose();
}
}
}
关键步骤:
- 文档初始化:创建一个
Document
对象来处理文件操作。 - HTML 文件加载:
LoadFromFile()
导入HTML文件,FileFormat.Html
指定输入类型。XHTMLValidationType.None
确保与非严格 HTM L的兼容性。 - 文本转换:
SaveToFile()
将加载的HTML内容转换为纯文本。
要保留原始格式和样式,您可以参考 将 HTML 文件转换为 Word 的 C# 教程。
常见问题
Q1:Spire.Doc 能否处理格式错误的 HTML?
答:可以。Spire.Doc 内置了对格式错误 HTML 的容错能力,但需要禁用严格验证以确保正确解析,即加载 HTML 文件时,使用 XHTMLValidationType.None
跳过严格的 XHTML 检查:
doc.LoadFromFile("malformed.html", FileFormat.Html, XHTMLValidationType.None);
Q2:能否只提取特定 HTML 元素?
答:可以,将 HTML 加载到 Document 对象后,您可以通过对象模型访问特定元素(如段落、表格等),只提取需要的内容而不是从整个文档中提取文本。
Q3:除了纯文本,Spire.Doc 能否将 HTML 转换为其他格式?
答:可以,Spire.Doc 支持转换为多种格式,包括 Word DOC/DOCX、PDF、图片、RTF等。
Q4:Spire.Doc 是否适用于.NET Core/.NET 5+?
A:Spire.Doc 完全支持.NET Core、.NET 5/6/7/8和.NET Framework 4.0+。这些框架在功能上没有差异,可以使用相同的代码(例如Document
、AppendHTML()
、SaveToFile()
)。
结论
使用 Spire.Doc 在 C# 中将 HTML 转换为纯文本非常简单高效。无论是处理 HTML 字符串还是文件,Spire.Doc 都能简化整个过程,保留文本结构的同时去除所有 HTML 标签。通过本文中的示例,您可以将 HTML 转 TXT 文本的功能无缝地集成到您的 C# 应用程序中。
如需解锁 Spire.Doc 库的全部功能并移除限制,可以点击申请30天免费试用许可证。