如何更新 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";
我正在尝试加载现有的 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";