我有以下YAML:
- name: List of monkeys
- author: Nicolas Raoul
- version: 2
- monkey:
- name: Chee-Chee
- age: 2
- monkey:
- name: Curious George
- age: 6
- food: bananas
- monkey:
- name: Mojo
- food: peanuts
在Ruby中,如何获取猴子? 前导码(名称,作者,...)中元数据参数的数量是可变的。
会返回类似的内容:
[{"monkey"=>[{"name"=>"Chee-Chee"}, {"age"=>2}]}, {"monkey"=>[{"name"=>"Curious George"}, {"age"=>6}, {"food"=>"bananas"}]}, {"monkey"=>[{"name"=>"Mojo"}, {"food"=>"peanuts"}]}]
在XML / XPath中我只想编写/monkey
,但是YAML / Ruby的语法是什么?
注意:我不想创建一个包含所有猴子的monkeys
节点作为子项,因为有很多猴子,客户端会编辑文件以添加更多,所以我想要保持文件非常简单。我是YAML的新手,所以可能需要一个更好的组织,但简洁是至关重要的,特别是我不想增加子级别的数量。
答案 0 :(得分:3)
您可以使用Enumerator的#select
方法仅返回集合中的猴子。如果您在名为your_yaml
的变量中包含已解析的YAML对象,则此代码将返回您要求的内容:
your_yaml.select { |item| item['monkey'] }
您可能不需要第二级连字符。如果你改变了......
- monkey:
- name: Chee-Chee
- age: 2
进入这个:
- monkey:
name: Chee-Chee
age: 2
猴子的属性将是哈希,而不是哈希数组。我想这对你更有用。