【问题标题】:YAML parsing in Ruby: How to get only a certain type of elements?Ruby 中的 YAML 解析:如何仅获取特定类型的元素?
【发布时间】:2011-07-05 05:46:08
【问题描述】:

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

【问题讨论】:

    标签: ruby yaml


    【解决方案1】:

    您可以使用 Enumerator 的 #select 方法从您的集合中只返回猴子。如果您将解析后的 YAML 对象放在名为 your_yaml 的变量中,则此代码将返回您要求的内容:

    your_yaml.select { |item| item['monkey'] }

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

    - monkey: 
       - name: Chee-Chee
       - age: 2
    

    进入这个:

    - monkey: 
        name: Chee-Chee
        age: 2
    

    猴子的属性将是一个哈希,而不是一个哈希数组。我想这对你更有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多