从 YAML 获取动态列表条目

Getting dynamic list entries from a YAML

我输入的 YAML 看起来像

menu:
  - 'key one': 'first'
  - 'key two': 'second'

非常简单。 menu 的子键是任意值,因此可以有 anykey:anyvalue.

现在我正在使用 YamlReader 以一种我可以一个接一个地处理键和值的方式来获取这些菜单项。

在这个循环中

var yaml = new YamlStream();
yaml.Load(reader);

foreach (var child in ((YamlMappingNode)yaml.Documents[0].RootNode).Children)
{
    string cName = child.Key.ToString();

我可以访问 menu。但是我怎样才能遍历 child.value 中的 kv 对?

(可能这是显而易见的事情,但我真的卡在这里了。)

我们需要像这样迭代节点上的 Children 集合:

var mapping = (YamlMappingNode)yaml.Documents[0].RootNode;

var items = (YamlSequenceNode)mapping.Children[new YamlScalarNode("menu")];

foreach (YamlMappingNode item in items)
{
    foreach(var child in item.Children)
    {
        Console.WriteLine(child.Key + " - " + child.Value);
    }
}