首页 > 解决方案 > 在 C# 中解析 yaml 流时如何保留注释?

问题描述

我正在使用 YamlDotNet 来读写 yamls。首先将yaml文件的内容加载到YamlStream中,对文档进行处理和修改。处理完文档后,会将内容写回文件。在此过程中,不会保留评论,并且在我的项目中保留评论至关重要。例如,

yaml 文件:

            users:
            - id: someid
              # comment that needs to be preserved
              emailAddress: something@some.com
              phone:

代码是

        var input = new StringReader(Document);
        var yaml = new YamlStream();
        yaml.Load(input);
        
        var document =
            (YamlMappingNode)yaml.Documents[0].RootNode;

        /* document is updated here */

        var serializer = new SerializerBuilder().Build();
        var updatedYaml = serializer.Serialize(document);

        Console.WriteLine(updatedYaml);

并且预期的输出是

            users:
            - id: someid
              # comment that needs to be preserved
              emailAddress: something@some.com
              phone:

但实际输出中不会保留注释。我看过这个关于评论保存的线程,但它谈到了使用数据成员属性发出评论。但在我的场景中,我没有使用任何类来反序列化/序列化 yaml。我只想在阅读和写回时将现有评论保留在 yaml 中。是否可以使用 YamlDotNet 做到这一点?

标签: c#yamlcommentsyamldotnet

解决方案


推荐阅读