4

私の目標:

  • ypath/xpath を使用して、yaml ドキュメントに特定のキーの値が含まれているかどうかを確認します
  • ypath/xpath を使用して指定されたキーの値を選択します
  • ドキュメント yaml :

    app:
        name: xxx
        version: xxx
    description:
        author:
            name: xxx
            surname: xxx
            email: xxx@xxx.xx
    

    チェックした内容:*

  • グーグル
  • スタックオーバーフロー
  • Ruby API (YAML::DBM が提供するメソッドの 1 つはselect )
  • 例:

    Module::Class.select('description/author/name')
    Module::Class.select('*/name')
    Module::Class.isset?('*/name')
    
    4

    2 に答える 2

    1

    yamlを使用します:

    require 'yaml'
    yml = YAML.load_file('your_file.yml')
    

    これでymlはハッシュになります。そのままお使いいただけます。これがあなたが試みることのための単純で醜い解決策です:

    if !yml["description"].nil? && !yml["description"]["author"].nil? && !yml["description"]["author"]["name"].nil? && !yml["description"]["author"]["name"].empty?
      puts "An author is set!"
    end
    
    于 2013-02-12T09:59:32.827 に答える
    0

    ActiveSupport最新のYPath実装がないので、チャンスを与えることをお勧めします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
    
    于 2013-02-12T11:48:35.927 に答える