如何用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
相关产品推荐
相关产品推荐

