Ruby中的YAML解析:如何只获取特定类型的元素?

Ruby中的YAML解析:如何只获取特定类型的元素?,ruby,yaml,Ruby,Yaml,我有以下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中,如何获得猴子? 序言名称、作者

我有以下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新手,因此可能需要一个更好的组织,但简洁是最重要的,特别是我不想增加子级别的数量。

您可以使用枚举器的选择方法仅返回集合中的猴子。如果在名为youryaml的变量中有已解析的YAML对象,则此代码将返回所需的内容:

你的_yaml.select{| item | item['monkey']}

您可能不需要在第二级中使用连字符。如果你改变这个

- monkey: 
   - name: Chee-Chee
   - age: 2
为此:

- monkey: 
    name: Chee-Chee
    age: 2
猴子的属性将是散列,而不是散列数组。我认为这对您更有用。

您可以使用枚举器的select方法仅返回集合中的猴子。如果在名为youryaml的变量中有已解析的YAML对象,则此代码将返回所需的内容:

你的_yaml.select{| item | item['monkey']}

您可能不需要在第二级中使用连字符。如果你改变这个

- monkey: 
   - name: Chee-Chee
   - age: 2
为此:

- monkey: 
    name: Chee-Chee
    age: 2
猴子的属性将是散列,而不是散列数组。我想这对你更有用