using YamlDotNet.Core;
using YamlDotNet.Core.Events;
using var reader = new StreamReader("test.yaml");
var scanner = new Scanner(reader, skipComments: false);
var parser = new Parser(scanner);
//using var writer = new StreamWriter("test2.yaml");
//var emitter = new Emitter(writer);
var emitter = new Emitter(Console.Out);
while (parser.MoveNext())
{
if (parser.Current is Scalar scalar)
{
if (scalar.IsKey && scalar.Value == "age")
{
emitter.Emit(scalar);
parser.MoveNext(); // move to age value
emitter.Emit(new Scalar("30")); // new age value
continue;
}
}
emitter.Emit(parser.Current);
}
It almost works. The following result is obtained:
person
# some comments
:
name: "Test"
# some comments
age: 30
The emitter violates the output. A colon is placed after the comment.
Do further research yourself.