Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何最好地在rubyonrails中创建递归目录列表的xml映射?_Ruby On Rails_Xml_Ruby - Fatal编程技术网

Ruby on rails 如何最好地在rubyonrails中创建递归目录列表的xml映射?

Ruby on rails 如何最好地在rubyonrails中创建递归目录列表的xml映射?,ruby-on-rails,xml,ruby,Ruby On Rails,Xml,Ruby,我想为我的public/catalogsrails目录中的所有目录和文件构建一个XML映射 我希望它是用基本的元素构造的,其name属性等于dir或file name <catalogs> <file name="index.html"> <directory name="foo"> <file name="file1.html" /> <directory name="bar"> <file n

我想为我的public/catalogsrails目录中的所有目录和文件构建一个XML映射

我希望它是用基本的
元素构造的,其name属性等于dir或file name

<catalogs>
 <file name="index.html">
 <directory name="foo">
    <file name="file1.html" />
    <directory name="bar">
       <file name="file2.html" />
    </directory>
 </directory>
</catalogs>

我只是不确定递归映射到xml的最佳方法是什么——我寻找了一个可以处理这个问题的插件,因为它似乎是有人可能会构造的东西


关于创建这个的最佳方法有什么想法或方向吗?

好吧,我从来没有找到一个插件或任何东西似乎是为实现这个目的而构建的。。。所以我不得不自己滚。。。因为我需要sha和url的属性,所以在这里它是完整的。希望这对其他人有帮助

xml = Builder::XmlMarkup.new(:indent => 2,:escape_attrs => true)
xml.instruct!    
xml.catalogs(:version=>2) {list_entries("#{CATALOG_PATH}", xml)}
File.open("#{RAILS_ROOT}/public/catalogs.xml", 'w') {|f| f.write(xml.target!) }

def list_entries(dir,xml)
  Dir.glob("#{dir}/*") do |entry|
    if File::directory?(entry)
      xml.directory(:name=>File.basename(entry)) {
        list_entries(entry, xml)
      }
    else
      xml.file(:name=>File.basename(entry),:sha => Digest::SHA256.hexdigest(entry),
      :url=>entry.gsub("#{CATALOG_PATH}","#{CATALOG_URL}"))
    end
  end
end