REXMLを用いてDOM木の構築
そういうことをJavaでやれという課題が出たので,Ruby,REXMLでやってみようと思う.比較的Javaっぽく,おしとやかに.
require 'rexml/document' require 'yaml' gems = REXML::Element.new("gemlist") yaml = YAML.load(File.open("gemlist.yml").read) yaml.each do |e| gem = REXML::Element.new("gem") gem.add_element("name").add_text(e['name']) gem.add_element("description").add_text(e['description']) gems.add_element(gem) end # XMLファイルへの書き込み File.open("gemlist.xml", "w") do |f| f.puts REXML::XMLDecl.new("1.0", "UTF-8") #=> <?xml version='1.0' encoding='UTF-8'?> f.puts REXML::DocType.new("gem", "SYSTEM 'gem.dtd'") #=> <!DOCTYPE gem SYSTEM 'gem.dtd'> f.puts gems end
dtdファイルなんて作ってませんけど.入力に使用したyamlファイルは,おおよそこんな感じです.
- name: rio description: RIO - Ruby I/O Comfort Class - name: ruby-growl description: Pure-Ruby Growl Notifier …以下略
さすが,それなりに機能が備わってるなぁ.この勢いで,ちゃっちゃとJavaのも終わらせたいところ.