Java8适配的markdown转换html工具(FlexMark)

坐标地址:

复制代码
<dependency>
    <groupId>com.vladsch.flexmark</groupId>
    <artifactId>flexmark-all</artifactId>
    <version>0.60.0</version>
</dependency>

工具类代码:

java 复制代码
import com.vladsch.flexmark.ext.tables.TablesExtension;
import com.vladsch.flexmark.ext.toc.TocExtension;
import com.vladsch.flexmark.html.HtmlRenderer;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.ast.Document;
import com.vladsch.flexmark.util.data.MutableDataSet;
import com.vladsch.flexmark.util.misc.Extension;

import java.util.Arrays;

public class MarkdownUtil {

    private static MutableDataSet options = new MutableDataSet();
    private static Parser parser;
    private static HtmlRenderer renderer;
    static {
        options.set(Parser.EXTENSIONS, Arrays.<Extension>asList(TocExtension.create(), TablesExtension.create()));
        parser = Parser.builder(options).build();
        renderer = HtmlRenderer.builder(options).build();
    }

    public static String markdownToHtml(String md) {
        Document document = parser.parse(md);
        return renderer.render(document);
    }

}

工具类测试:

java 复制代码
public class Main {
    public static void main(String[] args) {
        String markdownContent = "# 一级标题\n" +
                "## 二级标题\n" +
                "### 三级标题\n" +
                "#### 四级标题\n" +
                "##### 五级标题\n" +
                "###### 六级标题\n" +
                "## 段落\n" +
                "这是一段普通的段落。\n" +
                "## 列表\n" +
                "### 无序列表\n" +
                "- 项目1\n" +
                "- 项目2\n" +
                "- 项目3\n" +
                "### 有序列表\n" +
                "1. 项目1\n" +
                "2. 项目2\n" +
                "3. 项目3\n" +
                "## 链接\n" +
                "[百度](https://www.baidu.com)\n" +
                "## 图片\n" +
                "![图片描述](https://www.baidu.com/img/bd_logo1.png)\n" +
                "## 表格\n" +
                "| 表头1 | 表头2 | 表头3 |\n" +
                "|-------|-------|-------|\n" +
                "| 单元格1 | 单元格2 | 单元格3 |\n" +
                "| 单元格4 | 单元格5 | 单元格6 |";
        String html = MarkdownUtil.markdownToHtml(markdownContent);
        System.out.println(html);
    }
}

输出结果:

相关推荐
程序员晓琪12 分钟前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly17 分钟前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
闪闪发光得欧35 分钟前
前端提效新思路:Gemini 3.5 自动化定位 CSS 异常
前端·css
yingyima41 分钟前
掌握正则表达式的核心:贪婪与非贪婪匹配的底层机制
前端
众少成多积小致巨43 分钟前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
奇奇怪怪的1 小时前
文档摄入与 Chunking 策略全对决
前端
东坡白菜1 小时前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端
阳火锅2 小时前
😭测试小姐姐终于不骂我了!这个提BUG神器太香了...
前端·javascript·面试
道友可好2 小时前
AI 是最好的混乱放大器:代码熵管理实战
前端·人工智能·后端
猩猩程序员3 小时前
前端学习 AI Agent 开发
前端