Ruby on rails 如何最好地在rubyonrails中创建递归目录列表的xml映射?
我想为我的public/catalogsrails目录中的所有目录和文件构建一个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
元素构造的,其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