打算做一个Markdown 转 docx 的工具 网上找了C#的解析库 MarkDig,网上没有找到中文的例子通过阅读其源码编写了一个其表格的解析示例
注意事项,如要解析表格需添加扩展
var builder = (new Markdig.MarkdownPipelineBuilder());
builder.Extensions.Add(new Markdig.Extensions.Tables.PipeTableExtension());
var pipeline = builder.Build();
解析示例:
var doc = Markdig.Markdown.Parse("## 标题2 \r\n \r\n" +
"|表头1|表头2|\r\n" +
"|-----|-----|\r\n" +
"|行1列1|行1列2|\r\n" +
"|行2列1|行2列2|\r\n",
pipeline
);
for (int i = 0; i < doc.Count; i++)
{
var b = doc[i];
if (b is Markdig.Syntax.HeadingBlock)
{
var heading = (Markdig.Syntax.HeadingBlock)b;
Console.WriteLine(heading.Level);
var containerInline = heading.Inline as Markdig.Syntax.Inlines.ContainerInline;
var literalInline = containerInline.FirstChild as Markdig.Syntax.Inlines.LiteralInline;
var stringSlice = literalInline.Content;
Console.WriteLine(stringSlice.Text.Substring(stringSlice.Start, stringSlice.Length));
}
else if (b is Markdig.Extensions.Tables.Table)
{
var table = (Markdig.Extensions.Tables.Table)b;
for (int j = 0; j < table.Count; j++)
{
var row = (Markdig.Extensions.Tables.TableRow)table[j];
for (int k = 0; k < row.Count; k++)
{
var cell = (TableCell)row[k];
var containerInline = ((LeafBlock)cell[0]).Inline as Markdig.Syntax.Inlines.ContainerInline;
var literalInline = containerInline.FirstChild as Markdig.Syntax.Inlines.LiteralInline;
var stringSlice = literalInline.Content;
Console.WriteLine(stringSlice.Text.Substring(stringSlice.Start, stringSlice.Length));
}
}
}
else
{
}
}
本文介绍使用C#库MarkDig解析Markdown中的表格并转换为Docx格式的方法。通过添加扩展并利用Markdig.Extensions.Tables.PipeTableExtension进行表格解析,示例代码展示了如何逐行读取并处理Markdown表格数据。
2118

被折叠的 条评论
为什么被折叠?



