从 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);
}
}
我输入的 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);
}
}