首页 > 后端开发 > Golang > 正文

如何使用Golang实现Markdown解析工具_生成HTML文档示例

P粉602998670
发布: 2025-12-18 11:56:46
原创
899人浏览过
Go 语言可用 goldmark 库实现 Markdown 解析与 HTML 渲染:安装后可将字符串或文件转为 HTML,支持表格、链接、高亮等扩展,需按需启用 WithUnsafe() 以保障安全。

如何使用golang实现markdown解析工具_生成html文档示例

用 Go 语言实现 Markdown 解析工具,核心是借助成熟的第三方库(如 goldmark)完成语法解析与 HTML 渲染,而非从零手写解析器。下面以 goldmark 为例,给出简洁、可运行的生成 HTML 文档示例。

安装 goldmark 库

这是目前 Go 生态中最活跃、符合 CommonMark 规范的 Markdown 解析器:

  • 执行命令安装:go get github.com/yuin/goldmark
  • 支持扩展(表格、脚注、目录等),也兼容自定义渲染器

基础解析:将 Markdown 字符串转为 HTML

以下是最小可用示例,把一段 Markdown 文本直接转成 HTML 字符串:

package main
<p>import (
"bytes"
"fmt"
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/renderer/html"
)</p><p>func main() {
md := "# Hello\n\nThis is <strong>bold</strong> and <a href="https://www.php.cn/link/b05edd78c294dcf6d960190bf5bde635">a link</a>."</p><pre class="brush:php;toolbar:false;">var buf bytes.Buffer
if err := goldmark.Convert([]byte(md), &buf, 
    goldmark.WithRenderer(html.NewRenderer(
        html.WithUnsafe(), // 允许原始 HTML(如 <script>,按需开启)
    )),
); err != nil {
    panic(err)
}

fmt.Println(buf.String())
// 输出:<h1>Hello</h1>\n<p>This is <strong>bold</strong> and <a href="https://www.php.cn/link/b05edd78c294dcf6d960190bf5bde635">a link</a>.</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/00968c3c2c15" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">go语言免费学习笔记(深入)</a>”;</p>\n
登录后复制

}

读取文件并生成完整 HTML 页面

实际使用中常需将 .md 文件转为带 HTML 头部/尾部的独立页面:

百度文心百中
百度文心百中

百度大模型语义搜索体验中心

百度文心百中 263
查看详情 百度文心百中
  • 先读取 Markdown 文件内容(如 input.md
  • goldmark 渲染为 HTML 片段
  • 拼接标准 HTML 模板(含
  • 写入输出文件(如 output.html

示例代码片段:

import (
    "io/ioutil"
    "os"
    "strings"
)
<p>func renderToHTMLFile(mdPath, htmlPath string) error {
src, err := ioutil.ReadFile(mdPath)
if err != nil {
return err
}</p><pre class="brush:php;toolbar:false;">var buf bytes.Buffer
if err := goldmark.Convert(src, &buf, 
    goldmark.WithRenderer(html.NewRenderer(html.WithUnsafe())),
); err != nil {
    return err
}

htmlTemplate := `<!DOCTYPE html>
登录后复制

html>

Markdown Preview%s `
fullHTML := fmt.Sprintf(htmlTemplate, buf.String())
return ioutil.WriteFile(htmlPath, []byte(fullHTML), 0644)
登录后复制

}

添加常用扩展(表格、代码高亮等)

默认 goldmark 不启用扩展,需显式添加:

  • 表格:extension.Table
  • 自动链接:extension.Linkify
  • 代码块语法高亮(需配合 chroma):extension.Highlighting

启用方式示例:

import "github.com/yuin/goldmark/extension"
<p>md := goldmark.New(
goldmark.WithExtensions(
extension.Table,
extension.Linkify,
extension.Strikethrough,
),
goldmark.WithRendererOptions(
html.WithUnsafe(),
html.WithXHTML(),
),
)
登录后复制

不复杂但容易忽略:确保输入 Markdown 符合规范(如空行分隔段落),并根据安全需求谨慎使用 WithUnsafe() —— 若处理用户输入,建议关闭该选项以过滤 script 标签。

以上就是如何使用Golang实现Markdown解析工具_生成HTML文档示例的详细内容,更多请关注php中文网其它相关文章!

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号