C# 从YAML获取动态列表项
我的输入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
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_所以可能有一种方法可以不使用根名称而动态运行,但我不知道,所以我不是在寻找隐藏的东西,只是我必须走“原始”路径;-)