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

如何用C#在YAML文件中设置空格缩进与节点间空行

C#生成YAML时调整序列缩进并添加元素间空行

从你的代码看,你用的是YamlDotNet库来生成YAML。要实现你期望的格式,需要做两个关键调整:调整序列元素的缩进层级,以及在序列元素之间添加空行。

1. 修改序列生成代码(缩进+空行)

调整YamlSequenceNode的缩进设置,并在循环中为非末尾元素添加空行节点:

YamlSequenceNode fieldsSequence = new YamlSequenceNode();
// 为序列元素设置额外缩进,让"-"相对于父节点多缩进2个空格
fieldsSequence.Indent = 2;

for (int i = 0; i < register.Fields.Count; i++)
{
    Field field = register.Fields[i];
    var fieldNode = new YamlMappingNode();
    fieldNode.Add("name", field.Name);
    fieldNode.Add("description", field.Description);
    fieldNode.Add("position", field.Position);
    fieldNode.Add("type", field.type.ToString());
    fieldNode.Add("default", field.DefaultValue);
    
    fieldsSequence.Add(fieldNode);
    
    // 仅在非最后一个元素后添加空行节点
    if (i != register.Fields.Count - 1)
    {
        fieldsSequence.Add(new YamlScalarNode(string.Empty));
    }
}
registerNode.Add("fields", fieldsSequence);

2. 配置序列化器

确保序列化器使用正确的基础缩进设置:

var serializer = new SerializerBuilder()
    .WithIndentation(2)  // 基础层级的缩进为2个空格(和你当前输出的fields缩进匹配)
    .Build();

// 序列化并写入文件
string yamlContent = serializer.Serialize(registerNode);
File.WriteAllText("your-output-file.yaml", yamlContent);

说明

  • fieldsSequence.Indent = 2 会让序列中的每个-元素在父节点(fields)的缩进基础上再增加2个空格,实现你期望的4个空格缩进效果。
  • 添加空的YamlScalarNode会在序列化后生成空行,且最后一个元素后不会多余空行,符合你的格式要求。
  • 确保你的YamlDotNet版本是较新的,Indent属性在旧版本中可能不存在,若版本过低建议升级到最新稳定版。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:55:23