Markdig是.NET平台的高性能开源Markdown处理器,严格遵循 CommonMark 标准,确保解析一致性,其核心优势在于扩展性强:通过模块化管道模型,可轻松添加自定义语法或修改现有逻辑。Markdig内置支持表格、任务列表、数学公式、目录生成等丰富扩展,兼顾开发灵活性,同时具备顶级解析速度,高效处理大型文档,且核心库零依赖,轻量易集成。本文学习Markdig解析Markdown字符串的基本用法。
VS2022新建Winform项目,在Nuget包管理器中搜索并安装Markdig包。
主要使用Markdown类解析、转换或者保存Markdown字符串,如下图所示,其中Normalize函数将Markdown文本转换为标准化/规范化的格式,ToHtml函数将Markdown文本转换为Html格式,Parse函数将Markdown文本解析为包含语法树的MarkdownDocument对象,ToPlainText函数将Markdown文本转换为纯文本格式。
测试代码就一行,直接调用Markdown.ToHtml函数将Markdown文本(示例来自参考文献4)转换为Html字符串,如下图所示。
txtResult.Text = Markdown.ToHtml(txtOriginText.Text);
调用Markdown.Parse函数解析上述Markdown文本示例,使用VS2022的实时监视功能查看MarkdownDocument对象的结构。原始文本有10行,从其中解析出7个Block对象实例集合,类型包括HeadingBlock、ParagraphBlock、QuoteBlock等,从类名可以看出对应标题、段落、引用类型的数据,下图最右侧的HeadingBlock对象截图中Level属性表示标题级别。Markdig包中不同的Markdown数据类型对应不同的Block子类,主要的Block子类都在Markdig.Syntax命名空间下。
后续还要继续看Markdig的帮助文档,学习主要数据类型的用法。
参考文献:
[1]https://github.com/xoofx/markdig
[2]https://babelmark.github.io/
[3]https://commonmark.org/
[4]https://osdoc.net/md/31