C# (.NET) 中的 Markdown 处理:库与工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

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 MarkdownSharp


using 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

推荐