【问题标题】:How to update a property value in YamlDotNet?如何更新 YamlDotNet 中的属性值?
【发布时间】:2021-10-10 09:01:29
【问题描述】:

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

我的 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");

【问题讨论】:

    标签: c# yaml yamldotnet


    【解决方案1】:

    你可以这样设置值:

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

    Try it on fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 2020-04-30
      相关资源
      最近更新 更多