使用 Ruby 搜索/检查 YAML 文档中的值

xyz*_*xyz 5 ruby yaml psych

我的目标:

  • 使用 ypath/xpath 检查 yaml 文档是否包含特定键的值
  • 使用 ypath/xpath 选择指定键的值
  • 文档yaml

    app:
        name: xxx
        version: xxx
    description:
        author:
            name: xxx
            surname: xxx
            email: xxx@xxx.xx
    
    Run Code Online (Sandbox Code Playgroud)

    检查了什么:*

  • 谷歌
  • 堆栈溢出
  • Ruby API(YAML::DBM 作为它提供的方法之一是select
  • 例子:

    Module::Class.select('description/author/name')
    Module::Class.select('*/name')
    Module::Class.isset?('*/name')
    
    Run Code Online (Sandbox Code Playgroud)

    Ale*_*kin 0

    由于没有最新的 YPath 实现,我建议给一个ActiveSupport机会Nokogiri

    yml = LOAD_YML_WITH_YOUR_PREFERRED_YAML_ENGINE
    
    # ActiveSupport adds a to_xml method to Hash
    xml = yml.to_xml(:root => 'yaml')
    
    doc = Nokogiri::XML(xml)
    doc.xpath("description/author/name").map do |name|
      puts [name['key'], name['value']]
    end
    
    Run Code Online (Sandbox Code Playgroud)