当前位置: 代码网 > it编程>编程语言>Java > Java实现Markdown转HTML的完整示例代码

Java实现Markdown转HTML的完整示例代码

2026年08月31日 Java 我要评论
一、前言在内容管理系统、博客平台、在线文档等场景中,markdown 转 html 是最基础的需求之一。本文介绍如何使用 commonmark-java 库在 java 项目中实现这一功能,涵盖基础用

一、前言

在内容管理系统、博客平台、在线文档等场景中,markdown 转 html 是最基础的需求之一。本文介绍如何使用 commonmark-java 库在 java 项目中实现这一功能,涵盖基础用法、扩展支持及完整示例代码。

二、为什么选择 commonmark-java?

特性说明
规范兼容遵循 commonmark 0.31 标准
轻量高效核心仅 ~200kb,无冗余依赖
扩展丰富表格、删除线、任务列表等按需加载
jdk 兼容支持 java 8+
活跃维护github 星标 2.5k+,持续更新

对比其他方案:

方案优点缺点
commonmark-java轻量、标准、扩展灵活部分功能需手动加载扩展
flexmark-java功能全、内置扩展多体积大、包路径版本差异大
正则表达式替换无依赖不可靠、边界情况多

本文环境:jdk 1.8 + commonmark-java 0.21.0

三、快速开始

3.1 添加依赖

maven:

<dependency>
   <groupid>org.commonmark</groupid>
   <artifactid>commonmark</artifactid>
   <version>0.21.0</version>
</dependency>

四、完整实战:

覆盖所有 markdown 语法以下代码演示 标题、段落、列表、链接、图片、代码块、引用、表格 等完整转换:

public class markdowntohtml {
    public static void main(string[] args) {
        string markdown = ""
                // 1. 标题
                + "# 一级标题 (h1)\n"
                + "## 二级标题 (h2)\n"
                + "### 三级标题 (h3)\n"
                + "#### 四级标题 (h4)\n"
                + "##### 五级标题 (h5)\n"
                + "###### 六级标题 (h6)\n\n"

                // 2. 段落与文字格式
                + "这是普通段落。包含**粗体文字**、*斜体文字*、***粗斜体***。\n"
                + "还有~~删除线~~和`行内代码`。\n\n"

                // 3. 分隔线
                + "---\n\n"

                // 4. 引用块
                + "> 这是一级引用\n"
                + "> 可以有多行\n"
                + ">> 这是嵌套引用\n"
                + ">>> 三层嵌套引用\n\n"

                // 5. 无序列表
                + "### 无序列表\n"
                + "- 项目 a\n"
                + "- 项目 b\n"
                + "  - 子项目 b1\n"
                + "  - 子项目 b2\n"
                + "    - 子子项目 b2a\n"
                + "    - 子子项目 b2b\n"
                + "- 项目 c\n\n"

                // 6. 有序列表
                + "### 有序列表\n"
                + "1. 第一步\n"
                + "2. 第二步\n"
                + "   1. 子步骤 2.1\n"
                + "   2. 子步骤 2.2\n"
                + "3. 第三步\n\n"

                // 7. 任务列表 (部分解析器支持)
                + "### 任务列表\n"
                + "- [x] 已完成任务\n"
                + "- [ ] 未完成任务\n"
                + "- [x] 另一个已完成\n\n"

                // 8. 链接
                + "### 链接\n"
                + "[daydayjoyce](https://blog.csdn.net/m0_62395566?type=lately)\n"
                + "[带标题的链接](https://blog.csdn.net/m0_62395566?type=lately \"daydayjoyce\")\n"
                + "<https://blog.csdn.net/m0_62395566?type=lately>(自动链接)\n\n"

                // 9. 图片
                + "### 图片\n"
                + "![daydayjoyce logo](https://blog.csdn.net/m0_62395566?type=lately.png)\n"
                + "![带标题的图片](https://blog.csdn.net/m0_62395566?type=lately/banner.jpg \"daydayjoyce 横幅\")\n\n"

                // 10. 代码块
                + "### 代码块\n"
                + "```java\n"
                + "public class helloworld {\n"
                + "    public static void main(string[] args) {\n"
                + "        system.out.println(\"hello, markdown!\");\n"
                + "        // 支持语法高亮\n"
                + "        int number = 42;\n"
                + "        string text = \"commonmark\";\n"
                + "    }\n"
                + "}\n"
                + "```\n\n"

                // 11. 表格
                + "### 表格\n"
                + "| 功能 | 描述 | 支持状态 |\n"
                + "|------|------|----------|\n"
                + "| 标题 | h1-h6 | ✅ 支持 |\n"
                + "| 列表 | 有序/无序 | ✅ 支持 |\n"
                + "| 表格 | 对齐/嵌套 | ✅ 支持 |\n"
                + "| 代码 | 语法高亮 | ✅ 支持 |\n\n"

                // 12. 对齐表格
                + "### 对齐表格\n"
                + "| 左对齐 | 居中对齐 | 右对齐 |\n"
                + "|:-------|:--------:|-------:|\n"
                + "| 左 | 中 | 右 |\n"
                + "| a | b | c |\n\n"

                // 13. html 内嵌
                + "### html 内嵌\n"
                + "<div style=\"color: red;\">\n"
                + "  <p>这段是原始 html</p>\n"
                + "</div>\n\n"

                // 14. 特殊字符与转义
                + "### 特殊字符\n"
                + "星号: \\*  井号: \\#  反斜杠: \\\\\n"
                + "html 实体: &copy; &reg; &trade;\n\n"

                // 15. 脚注 (部分支持)
                + "### 脚注\n"
                + "这是一个脚注引用[^1]\n"
                + "[^1]: 这是脚注内容\n\n"

                // 16. 水平线变体
                + "***\n\n"

                // 17. 复杂嵌套
                + "### 复杂嵌套示例\n"
                + "> 引用块里可以有 **粗体** 和 [链接](https://blog.csdn.net/m0_62395566?type=lately)\n"
                + "> \n"
                + "> ```\n"
                + "> 代码块在引用里\n"
                + "> ```\n"
                + "> \n"
                + "> - 列表项 1\n"
                + "> - 列表项 2\n\n"

                // 18.  emoji 和 unicode
                + "### emoji\n"
                + "🎉 🚀 💡 ✅ ❌ 🔥 ⭐\n\n"

                // 结束
                + "---\n"
                + "**markdown 解析演示结束!** 感谢使用 *commonmark* 🎉";
                
        parser parser = parser.builder()
                .extensions(arrays.aslist(tablesextension.create()))
                .build();

        htmlrenderer renderer = htmlrenderer.builder()
                .extensions(arrays.aslist(tablesextension.create()))
                .build();

        node document = parser.parse(markdown);
        system.out.println(renderer.render(document));
    }
}

到此这篇关于java实现markdown转html的完整示例代码的文章就介绍到这了,更多相关java实现markdown转html内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com