Java 解析Markdown文档格式的两种方式
方法一:CommonMark
1. 介绍
CommonMark是一个规范,定义了一种简洁、一致的 Markdown 格式语法。它旨在提供一种标准的方式来解析和渲染 Markdown 文档。
2. 使用教程
- 引入Maven依赖
- commonmark-ext-gfm-tables:用来实现表格的解析的依赖
<dependency> <groupId>org.commonmark</groupId> <artifactId>commonmark</artifactId> <version>0.20.0</version> </dependency> <!-- 实现表格解析 --> <dependency> <groupId>org.commonmark</groupId> <artifactId>commonmark-ext-gfm-tables</artifactId> <version>0.20.0</version> </dependency>
JAVA代码示例
public static String parseMarkdownCommonmark(String markdownContent) { //解析表格 List<Extension> extensions = Arrays.asList(TablesExtension.create()); org.commonmark.parser.Parser parser = org.commonmark.parser.Parser.builder().extensions(extensions).build(); Node document = parser.parse(markdownContent); org.commonmark.renderer.html.HtmlRenderer renderer = org.commonmark.renderer.html.HtmlRenderer.builder().extensions(extensions).build(); return renderer.render(document); }
3. 问题
无法实现目录的解析,也就是Markdown文档中的[TOC]
,当然Flexmark很好的解决了这个问题。
方法二:Flexmark
1. 介绍
Flexmark-Java是一个基于 CommonMark 规范的 Java 库,用于解析和渲染 Markdown 文档。它提供了一个灵活的、易于使用的 API,可以自定义解析和渲染的行为。
2. 使用示例
- 引入Maven依赖
- 最新版本为0.64.8,支持java11及更高,不支持java8
<dependency> <groupId>com.vladsch.flexmark</groupId> <artifactId>flexmark-all</artifactId> <version>0.62.2</version> <scope>compile</scope> </dependency>
java代码
public static String parseMarkdownFlexmark(String markdown) { MutableDataSet options = new MutableDataSet(); //TOC目录解析,表格解析 options.set(Parser.EXTENSIONS, Arrays.asList(TocExtension.create(), TablesExtension.create())); Parser parser = Parser.builder(options).build(); Document document = parser.parse(markdown); HtmlRenderer renderer = HtmlRenderer.builder(options).build(); return renderer.render(document); }
到此这篇关于Java 解析Markdown文档格式的文章就介绍到这了,更多相关Java Markdown文档格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot调整ApplicationContextAware如何实现类加载顺序
SpringBoot调整ApplicationContextAware实现类加载顺序问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-05-05spring boot项目同时传递参数和文件的多种方式代码演示
这篇文章主要介绍了spring boot项目同时传递参数和文件的多种方式,在开发接口中,遇到了需要同时接收参数和文件的情况,可以有多种方式实现文件+参数的接收,这里基于spring boot 3 + vue 3 + axios,做一个简单的代码演示,需要的朋友可以参考下2023-06-06
最新评论