C# (.NET) 中的 Markdown 处理:库与工具概览
Markdown 是一种轻量级标记语言,广泛用于文档、README 文件、博客和聊天中的文本格式化。在 C# (.NET) 生态系统中,有几个强大的库可以解析、处理 Markdown 并将其转换为 HTML 和其他格式。在本文中,我们将介绍最流行的工具、它们的功能以及使用示例。
为什么需要在 C# 中处理 Markdown?
现代 Web 应用程序、内容管理系统 (CMS) 和代码编辑器越来越频繁地使用 Markdown 作为主要输入格式。在 C# (.NET) 中,这对于以下场景非常有用:
- 生成静态内容(文档、博客)
- 实现支持 Markdown 的所见即所得编辑器
- 从外部系统(GitHub、Reddit、Stack Overflow)导入/导出数据
- 通过中间 HTML 将 Markdown 转换为 PDF、DOCX 或 LaTeX
C# (.NET) 的主要库
1. Markdig
Markdig 是 .NET 中最流行且性能最高的 Markdown 处理库。它支持 CommonMark、GFM(GitHub 风格的 Markdown)以及众多扩展:表格、任务列表、自动链接替换、数学公式(通过 MathJax)等等。
安装:
// 通过 NuGet 包管理器Install-Package Markdig
// 或通过 .NET CLIdotnet add package Markdig使用示例:
using Markdig;
string markdown = @"# 一级标题
**粗体文本** 和 *斜体*。
- 列表项 1- 列表项 2
> 引用
```csharpConsole.WriteLine(""Hello, World!"");```";
// 使用 GFM 扩展转换为 HTMLstring html = Markdown.ToHtml(markdown);
Console.WriteLine(html);高级功能:
// 配置带有额外扩展的管道var pipeline = new MarkdownPipelineBuilder() .UseAdvancedExtensions() // 启用所有流行扩展 .UseMathematics() // 支持 LaTeX 公式 .UseEmojiAndSmiley() // 表情符号 :smile: .Build();
string htmlWithExtensions = Markdown.ToHtml(markdown, pipeline);2. CommonMark.NET
CommonMark.NET 是 CommonMark 规范(Markdown 标准)的严格实现。该库轻量级、无依赖,非常适合需要与参考实现兼容的项目。
安装:
Install-Package CommonMark.NET使用示例:
using CommonMark;
string markdown = "你好,**世界**!";string html = CommonMarkConverter.Convert(markdown);
// 结果:<p>你好,<strong>世界</strong>!</p>3. MarkdownSharp
MarkdownSharp 是 Jeff Atwood(Stack Overflow 联合创始人)将原始 Markdown 处理器移植到 C# 的版本。该库已过时,但仍用于旧项目。仅支持基本语法,无扩展。
Install-Package MarkdownSharpusing MarkdownSharp;
var markdown = new Markdown();string html = markdown.Transform("**Hello**");附加工具
4. HtmlSanitizer(用于安全输出)
将 Markdown 转换为 HTML 并在网页上输出时,清除结果中潜在的危险标签(XSS 攻击)非常重要。请使用 HtmlSanitizer 库:
Install-Package HtmlSanitizer
using Ganss.XSS;
var sanitizer = new HtmlSanitizer();string rawHtml = Markdown.ToHtml("<script>alert('xss')</script>");string safeHtml = sanit