Arbeiten mit Markdown in Java: Bibliotheken, Parser und Beispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Markdown in Java: Überblick über Bibliotheken und Anwendungsbeispiele

\n\n

Markdown ist eine leichtgewichtige Auszeichnungssprache, die häufig zur Textformatierung in Dokumentationen, README-Dateien, Blogs und Content-Management-Systemen verwendet wird. In Java gibt es mehrere ausgereifte Bibliotheken, die das Parsen von Markdown, die Konvertierung in HTML und die Durchführung umgekehrter Operationen ermöglichen. In diesem Artikel betrachten wir die drei gängigsten Bibliotheken im Detail: CommonMark, Flexmark und Pegdown, und geben praktische Beispiele für deren Verwendung.

\n\n

1. CommonMark (org.commonmark:commonmark)

\n\n

CommonMark ist ein strenger Markdown-Standard, der die Mehrdeutigkeiten der ursprünglichen Spezifikation beseitigt. Die Bibliothek commonmark-java ist die Referenzimplementierung dieses Standards. Sie ist leichtgewichtig, schnell und unterstützt Erweiterungen (Tabellen, Durchstreichungen, automatische Links).

\n\n

Einbindung (Maven):

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

Beispiel für das Parsen von Markdown in 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 = "# Überschrift\\n\\nDies ist **fetter** Text und *kursiver* Text.\\n\\n- Punkt 1\\n- Punkt 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

Ergebnis der Ausführung:

\n
<h1>Überschrift</h1>\n<p>Dies ist <strong>fetter</strong> Text und <em>kursiver</em> Text.</p>\n<ul>\n<li>Punkt 1</li>\n<li>Punkt 2</li>\n</ul>
\n\n

Zum Einbinden von Erweiterungen (z. B. Tabellen) verwenden Sie:

\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 ist eine leistungsstarke Bibliothek für die Arbeit mit Markdown, die zahlreiche Erweiterungen unterstützt: GFM-Tabellen, Fußnoten, Attribute, Typografie, Syntax-Highlighting für Code und vieles mehr. Sie ist vollständig anpassbar und eignet sich für komplexe Projekte.

\n\n

Einbindung (Maven):

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

Beispiel für die Konvertierung von Markdown in HTML mit Tabellen:

\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 = "| Spalte 1 | Spalte 2 |\\n|-----------|-----------|\\n| Zelle 1   | Zelle 2   |";\n\n        String html = renderer.render(parser.parse(markdown));\n        System.out.println(html);\n    }\n}
\n\n

Flexmark ermöglicht auch das Extrahieren von Metadaten (YAML front matter), die Konvertierung in LaTeX und die Arbeit mit dem AST-Baum.

\n\n<

Empfehlungen