在一个旧的项目中,我们使用Microsoft.Toolkit.Parsers.Markdown来解析Markdown内容。
例如,我们使用这个库获取MD块中的标题列表,如下所示:
void Main()
{
string md = @"
# h1
## h2
Some content.
## h2 bis
some other content
";
var headings = GetHeadings(md);
headings.Dump();
}
// You can define other methods, fields, classes and namespaces here
private List<string> GetHeadings(string markdownContent)
{
var document = new Microsoft.Toolkit.Parsers.Markdown.MarkdownDocument();
document.Parse(markdownContent);
return document.Blocks
.Where(block => block.Type == MarkdownBlockType.Header)
.Select(block => block.ToString()).ToList();
}
现在,我们正在将整个项目移植到一个更新的版本。Microsoft.Toolkit.Parsers.Markdown
现在已经不受欢迎了,微软建议改用MarkDig。
有没有一种方法可以像我们使用Toolkit库那样解析MD文本并检索不同的块?
如果没有,我可以使用哪些其他库来实现相同的结果?
发布于 2022-02-21 11:15:19
正如电子报警器在对这个问题的评论中所建议的那样,这个问题可以这样解决:
var document = Markdown.Parse(markdownContent);
return document.Select(b => b as HeadingBlock)
.Where(b => b != null)
.Select(hb => hb.Inline.FirstChild.ToString());
我所缺少的部分是MarkdownDocument
对象本身就是块的集合。相反,要使用Microsoft.Toolkit.Parsers.Markdown.MarkdownDocument,检索块,需要访问Blocks
属性。
更多细节关于源代码。
https://stackoverflow.com/questions/71203767
复制相似问题