You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET中如何提取Markdown文件FrontMatter到模型(使用Markdig)

提取Markdown文件中的FrontMatter并转换内容

你可以借助Markdig的YamlFrontMatter扩展来处理开头的---标记内容(也就是FrontMatter),步骤如下:

1. 安装必要的NuGet包

确保已安装Markdig的Yaml扩展包以及YAML解析库:

dotnet add package Markdig.Yaml
dotnet add package YamlDotNet

2. 创建博客模型类

定义一个对应FrontMatter字段的模型:

public class BlogPost
{
    public string? Title { get; set; }
    public string? Description { get; set; }
    public DateTime? PubDate { get; set; }
    public string? CoverImage { get; set; }
    public string? ContentHtml { get; set; }
}

3. 配置Markdig管道并处理内容

修改原有代码,添加YamlFrontMatter扩展,同时提取FrontMatter数据:

// 配置Markdig管道,启用YamlFrontMatter扩展
var pipeline = new MarkdownPipelineBuilder()
    .UseYamlFrontMatter()
    .Build();

string content = File.ReadAllText(mdFilepath);

// 解析Markdown内容
var document = Markdown.Parse(content, pipeline);

// 提取FrontMatter数据
var yamlBlock = document.Descendants<YamlFrontMatterBlock>().FirstOrDefault();
var blogPost = new BlogPost();

if (yamlBlock != null)
{
    // 解析YAML内容到模型
    var deserializer = new YamlDotNet.Serialization.DeserializerBuilder()
        .Build();
    blogPost = deserializer.Deserialize<BlogPost>(yamlBlock.Content);
}

// 将正文Markdown转换为HTML(自动排除FrontMatter部分)
blogPost.ContentHtml = document.ToHtml(pipeline);

4. 关键说明

  • UseYamlFrontMatter()会让Markdig识别开头的---块,将其解析为独立的YamlFrontMatterBlock节点
  • 解析后,原Markdown内容会自动排除FrontMatter部分,转换HTML时仅处理正文内容
  • 借助YamlDotNet可以快速将YAML字符串映射到自定义模型类

内容的提问来源于stack exchange,提问作者Wasim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:41:21