如何更新 YamlDotNet 中的 属性 值?

How to update a property value in YamlDotNet?

我正在尝试加载现有的 yaml 文件并更新它的一些属性。 但是-我正在尝试而不是覆盖其他属性。

我的 yaml:

A:
  a1: value1
  a2: value2

所需的 yaml:

A:
 a1: value1
 a2: modified

我目前有以下代码,但我只能覆盖A的值:

string filePath = @"some\path\to\my.yaml";
TextReader reader = File.OpenText(filePath);
var yaml = new YamlStream();
yaml.Load(reader);
var mapping = (YamlMappingNode)yaml.Documents[0].RootNode;

mapping.Children["A"] = new YamlMappingNode { {"a2", "modified"} };  //this overrides A and essentially deletes A.a1

我也试过这一行,但它失败了,因为 a2 已经存在:

(mapping.Children["A"] as YamlMappingNode).Add( "a2", "modified");

您可以这样设置值:

var mapping = (YamlMappingNode)yaml.Documents[0].RootNode;
((YamlScalarNode)mapping.Children["A"]["a2"]).Value = "modified";

Try it on fiddle