commonmark-java_CommonMark 使用教程:将 Markdown 语法转成 Html

今天要分享的是通过框架 CommonMark 将 Markdown 语法转成 Html 文本。这个功能很强大,用处非常广。如果说前两天 通过 API 上传文件到谷歌云盘 只适用于下载站。那这个技巧我们做任何网站都可以用到,而且非常好用。同样我说的下载站自动生产文章引流到微信项目 也用到了它。

哎 还是想再提一次,这个功能对做网站意义很大,大家多想想,别局限思维

Markdown写作

从 2016年 开始写博客,我的写作方式一直在改变,准确的说一直在进步,因为效率越来越高。

最初在 CSDN 上写东西时非常蹩脚,在他们编辑器上写点然后调整格式,再写,碰到图片还得将图片插入进去,调整图片大小位置等等,调整完继续写。

效率非常低。

后面了解到 Markdown ,改用 MD 写东西,效率快很多。后面在 Markdown 基础上慢慢优化找到自己的写作方式。

这不是本文重点,先略过

一般我用 MD 语法写完后,得到的是一堆带 MD 符号的文字,以下简称 MD文本。

aa1fdc72ae3a3e8cd633012a9ab62b83.png

然后会通过工具转成对应 Html 标记文本,复制到博客编辑框中,这就是最后显示的文章。

391a7d93d1056c9107bbb7bf44e6128c.png

bbbaa02690ad809d59ae33efc21bae05.png

到这一步不知道大家发现没,假设我们能通过代码将 MD文本 转成对应的 Html文本,这样只要我们能获取到文章的 MD文本,也就获取到文章的最后显示。

如果我们要做一个自动生产文章的网站,只剩下一步,如何自动不断的获取 MD文本, 接着就能不断转成对应文章,然后发布。如果对于全是以内容为主的网站当然没办法不断获取 MD文本,毕竟内容为主,很多东西都不固定。

但如果网站是下载站呢?下载站主要是提供文件下载,内容只是对文件的简单介绍,基本就是百度百科内容,整个文章其实已经固定,有一定规律,这样是有可能会不断获取 MD文本。

呃呃呃,发现跑题了,这篇主要介绍 CommonMark的使用,关于下载站的内容接下来一起总结

以上内容都是在说明 CommonMark的重要性。

CommonMark

使用起来很简单,Github上有教程。这里我主要介绍操作其中一些标签的方法,大家可以举一反三,自定义其他各种标签。这里我举例两个标签的自定义: 图片,超链接。

因为 CommonMark 默认转成的 Html 是不会带图片大小和位置的。

超链接也是,默认转成后点击链接会在本网页跳转到超链接网页,我希望的效果是点击超链接后,会在浏览器另开一个网页打开。这样对网站的留存率会好点吧。

Maven依赖

com.atlassian.commonmark

commonmark

0.11.0

自定义标签属性操作类

static class PAttributeProvider implements AttributeProvider {

@Override

public void setAttributes(Node node, String tagName, Map attributes) {

if (node instanceof Image) {

attributes.put("style", "width:150px;height:200px;position:relative;left:50%;margin-left:-100px;");

}

if(node instanceof Link){

attributes.put("target", "_blank");

}

}

}

如上我操作了两个标签:Image 和 Link,分别在标签中加了一些属性。这里我只是举例,不一定要跟着这样操作,不操作标签也行。

这一步的目的是为了说明有这个方法而已。

markdown转成html

Parser parser = Parser.builder().build();

Node document = parser.parse(md);

HtmlRenderer renderer = HtmlRenderer.builder().

attributeProviderFactory(new AttributeProviderFactory() {

@Override

public AttributeProvider create(AttributeProviderContext attributeProviderContext) {

return new PAttributeProvider();

}

}).

build();

String mdHtml = renderer.render(document);

ok,已经转成 html 了,方法使用就是这么简单。

还有些问题留到 下载站项目总结 中再说吧,比如 短代码的处理等。因为这些涉及到实际举例,才能看清楚。

后续文章 发布地址 老郭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Java CommonMark HTML转换为Markdown,你可以使用以下步骤: 1. 使用Java CommonMark库将HTML解析为通用抽象语法树(AST)表示形式。可以使用像flexmark-java这样的库,它提供了将HTML解析为AST的功能。 2. 遍历AST,并根据节点类型将其转换为Markdown语法。根据节点类型的不同,你可能需要执行不同的转换操作。 3. 根据需要处理节点的子节点和属性。例如,对于链接节点,你需要提取链接文本和链接URL,并将其转换为Markdown链接语法。 4. 构建Markdown字符串,并将转换后的AST节点添加到字符串中。你可以使用StringBuilder或类似的工具来构建字符串。 以下是一个简单的示例代码,演示了如何使用flexmark-java库将HTML转换为Markdown: ```java import com.vladsch.flexmark.html.HtmlRenderer; import com.vladsch.flexmark.parser.Parser; public class HtmlToMarkdownConverter { public static String convert(String html) { // 创建解析器和渲染器 Parser parser = Parser.builder().build(); HtmlRenderer renderer = HtmlRenderer.builder().build(); // 将HTML解析为AST Node document = parser.parse(html); // 将AST转换为Markdown String markdown = renderer.render(document); return markdown; } public static void main(String[] args) { String html = "<h1>Hello, world!</h1>"; String markdown = convert(html); System.out.println(markdown); } } ``` 这个示例中,我们使用flexmark-java库的Parser类将HTML解析为AST,然后使用HtmlRenderer类将AST渲染为Markdown字符串。你可以根据你的需求进一步处理AST节点,以执行更复杂的转换操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值