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);
    }
}

输出结果:

相关推荐
小高00711 分钟前
🚀React 更新界面全流程:从 setState 到 像素上屏
前端·react.js·面试
Aczone2817 分钟前
数据结构(三)双向链表
java·数据结构·链表
菜菜的后端私房菜17 分钟前
Dubbo2到Dubbo3服务发现机制的优化
java·后端·dubbo
万少18 分钟前
HarmonyOS 读取系统相册图片并预览
前端·harmonyos·客户端
林太白22 分钟前
CSS长度单位px、rem、em、vh、vw
前端·javascript·css
王者鳜錸25 分钟前
VUE+SPRINGBOOT从0-1打造前后端-前后台系统-登录实现
前端·vue.js·spring boot
33255_40857_2805926 分钟前
RocketMQ实战指南:Java开发者的分布式消息中间件全解析
java·rocketmq
Seven9736 分钟前
剑指offer-19、顺时针打印矩阵
java
SimonKing37 分钟前
PostMan不香了,IDEA因为Apipost插件这一功能轻松取代
java·后端·程序员