Travailler avec Markdown en C# (.NET) : meilleures bibliothèques et exemples d'utilisation
Markdown est un langage de balisage léger qui permet de formater du texte à l'aide de symboles simples. Il est largement utilisé pour rédiger de la documentation, des fichiers README, des articles de blog et des messages sur les forums. Dans l'écosystème C# (.NET), il existe plusieurs bibliothèques puissantes pour l'analyse, la conversion et la génération de Markdown. Dans cet article, nous examinerons les principaux outils et montrerons comment les utiliser.
Bibliothèques populaires pour travailler avec Markdown en C#
Les solutions les plus demandées dans .NET :
- Markdig — une bibliothèque moderne, rapide et entièrement compatible avec la spécification CommonMark. Prend en charge les extensions (tableaux, barré, emoji, diagrammes, etc.).
- MarkdownSharp — un analyseur léger de Stack Overflow. Simple, mais ne prend pas en charge CommonMark ni de nombreuses extensions.
- CommonMark.NET — l'implémentation officielle de la spécification CommonMark. Idéal pour une compatibilité stricte.
Dans ce guide, nous nous concentrerons sur Markdig, car il est devenu le standard de facto pour les projets .NET modernes.
Installation de Markdig
Ajoutez le package via NuGet Package Manager ou .NET CLI :
dotnet add package MarkdigOu via Package Manager Console :
Install-Package MarkdigUtilisation de base : conversion de Markdown en HTML
Le scénario le plus simple consiste à convertir une chaîne Markdown en HTML. Markdig le fait en une seule ligne :
using Markdig;
string markdown = "# Titre 1
Ceci est **du texte en gras** et *en italique*.
- Élément de liste 1- Élément de liste 2";
string html = Markdown.ToHtml(markdown);
Console.WriteLine(html);Résultat :
<h1>Titre 1</h1><p>Ceci est <strong>du texte en gras</strong> et <em>en italique</em>.</p><ul><li>Élément de liste 1</li><li>Élément de liste 2</li></ul>Travailler avec les extensions Markdig
Markdig prend en charge de nombreuses extensions. Pour les utiliser, vous devez créer un pipeline :
using Markdig;using Markdig.Extensions.Tables;
var pipeline = new MarkdownPipelineBuilder() .UseAdvancedExtensions() // inclut toutes les extensions principales .Build();
string markdown = "| Titre 1 | Titre 2 ||---------|---------|| Cellule 1 | Cellule 2 |";
string html = Markdown.ToHtml(markdown, pipeline);
Console.WriteLine(html);Ce code générera un tableau HTML. Vous pouvez activer des extensions individuelles : .UseTables(), .UseEmojiAndSmiley(), .UseTaskLists() et autres.
Conversion de HTML en Markdown
La conversion inverse (HTML → Markdown) n'est pas incluse dans le package standard de Markdig, mais vous pouvez utiliser la bibliothèque ReverseMarkdown :
dotnet add package ReverseMarkdownusing ReverseMarkdown;
var converter = new Converter();string html = "<h1>Bonjour le monde !</h1><p>C'est <strong>important</strong></p>";string markdown = converter.Convert(html);
Console.WriteLine(markdown);Travailler avec des fichiers Markdown
Souvent, le Markdown est stocké dans des fichiers. Exemple de lecture et de conversion :
using Markdig;
string filePath = "document.md";string markdownContent = File.ReadAllText(filePath);string htmlContent = Markdown.ToHtml(markdownContent);
File.WriteAllText("output.html", htmlContent);Création de HTML avancé avec un pipeline personnalisé
Vous pouvez affiner le pipeline pour des tâches spécifiques :
var pipeline = new MarkdownPipelineBuilder()