Travailler avec Markdown en Java : bibliothèques, analyseurs et exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Markdown en Java : présentation des bibliothèques et exemples d'utilisation

\n\n

Markdown est un langage de balisage léger, largement utilisé pour formater du texte dans la documentation, les fichiers README, les blogs et les systèmes de gestion de contenu. En Java, il existe plusieurs bibliothèques matures permettant d'analyser Markdown, de le convertir en HTML et d'effectuer des opérations inverses. Dans cet article, nous examinerons en détail les trois bibliothèques les plus populaires : CommonMark, Flexmark et Pegdown, et nous fournirons des exemples pratiques de leur utilisation.

\n\n

1. CommonMark (org.commonmark:commonmark)

\n\n

CommonMark est un standard strict de Markdown qui élimine les ambiguïtés de la spécification originale. La bibliothèque commonmark-java est l'implémentation de référence de ce standard. Elle est légère, rapide et prend en charge les extensions (tableaux, barré, liens automatiques).

\n\n

Ajout de la dépendance (Maven) :

\n
<dependency>\n    <groupId>org.commonmark</groupId>\n    <artifactId>commonmark</artifactId>\n    <version>0.21.0</version>\n</dependency>
\n\n

Exemple d'analyse de Markdown en HTML :

\n
import org.commonmark.node.*;\nimport org.commonmark.parser.Parser;\nimport org.commonmark.renderer.html.HtmlRenderer;\n\npublic class CommonMarkExample {\n    public static void main(String[] args) {\n        String markdown = "# Titre\\n\\nCeci est du texte **gras** et *italique*.\\n\\n- Élément 1\\n- Élément 2";\n\n        Parser parser = Parser.builder().build();\n        Node document = parser.parse(markdown);\n\n        HtmlRenderer renderer = HtmlRenderer.builder().build();\n        String html = renderer.render(document);\n\n        System.out.println(html);\n    }\n}
\n\n

Résultat de l'exécution :

\n
<h1>Titre</h1>\n<p>Ceci est du texte <strong>gras</strong> et <em>italique</em>.</p>\n<ul>\n<li>Élément 1</li>\n<li>Élément 2</li>\n</ul>
\n\n

Pour ajouter des extensions (par exemple, les tableaux), utilisez :

\n
import org.commonmark.ext.gfm.tables.TablesExtension;\n\nParser parser = Parser.builder()\n    .extensions(List.of(TablesExtension.create()))\n    .build();
\n\n

2. Flexmark (com.vladsch.flexmark)

\n\n

Flexmark est une bibliothèque haute performance pour travailler avec Markdown, qui prend en charge de nombreuses extensions : tableaux GFM, notes de bas de page, attributs, typographie, coloration syntaxique du code et bien plus encore. Elle est entièrement personnalisable et adaptée aux projets complexes.

\n\n

Ajout de la dépendance (Maven) :

\n
<dependency>\n    <groupId>com.vladsch.flexmark</groupId>\n    <artifactId>flexmark-all</artifactId>\n    <version>0.64.8</version>\n</dependency>
\n\n

Exemple de conversion de Markdown en HTML avec des tableaux :

\n
import com.vladsch.flexmark.html.HtmlRenderer;\nimport com.vladsch.flexmark.parser.Parser;\nimport com.vladsch.flexmark.util.data.MutableDataSet;\nimport com.vladsch.flexmark.ext.tables.TablesExtension;\n\nimport java.util.Arrays;\n\npublic class FlexmarkExample {\n    public static void main(String[] args) {\n        MutableDataSet options = new MutableDataSet();\n        options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create()));\n\n        Parser parser = Parser.builder(options).build();\n        HtmlRenderer renderer = HtmlRenderer.builder(options).build();\n\n        String markdown = "| Colonne 1 | Colonne 2 |\\n|-----------|-----------|\\n| Cellule 1  | Cellule 2  |";\n\n        String html = renderer.render(parser.parse(markdown));\n        System.out.println(html);\n    }\n}
\n\n

Flexmark permet également d'extraire des métadonnées (YAML front matter), de convertir en LaTeX et de travailler avec l'arbre AST.

\n\n<

Recommendations