C# 从YAML获取动态列表项

C# 从YAML获取动态列表项,c#,yamldotnet,C#,Yamldotnet,我的输入YAML看起来像 menu: - 'key one': 'first' - 'key two': 'second' 很简单。菜单的子键是任意值,因此可以有anykey:anyvalue 现在,我使用YamlReader来获取这些菜单项,这样我就可以一个接一个地处理键和值 在这个循环中 var yaml = new YamlStream(); yaml.Load(reader); foreach (var child in ((YamlMappingNode)yaml.Docu

我的输入YAML看起来像

menu:
  - 'key one': 'first'
  - 'key two': 'second'
很简单。
菜单的子键是任意值,因此可以有
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();
我可以访问
菜单
。但是如何在
child.value
中循环通过kv对呢


(这可能是显而易见的,但我真的被困在这里了。)

我们需要迭代节点上的
子集合,如:

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);
    }
}

你提前知道钥匙,还是它是动态的?它们是动态的,这就是我在这里的原因。我只是看了一下你的答案。我使用了那种后备解决方案:
var items…
。然而,既然我已经循环到
菜单
,并在我上面的代码中的
子项
中得到了它,那么从
子项
访问这些
不是有一个更短的方法吗?这就是最初让我困惑的地方。@qwerty_所以可能有一种方法可以不使用根名称而动态运行,但我不知道,所以我不是在寻找隐藏的东西,只是我必须走“原始”路径;-)