MarkDig 使用 笔记

打算做一个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
                {
                }

           

              
            }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值