2013年1月16日水曜日

RubyでCSVをXMLに変換

あまり汎用性はないですが・・・
勉強がてらに書いてみました。
 某ペンを管理するツールを作ろうかと最近思い、とりあえず色の基本データをXMLに書き出すことにしました。
builder/xmlmarkupを使うと随分直感的な表現でXMLが書けます。感動した。
ruby 1.9で書いてます。


# encoding: utf-8
require 'builder/xmlmarkup'
require 'csv'
xm = Builder::XmlMarkup.new :indent => 2
xm.instruct! directive_tag=:xml, :encoding=> 'UTF-8'

print "変換するコピックデータを指定してください:"
readfile = gets.chop.to_s

f=CSV.read("./#{readfile}.csv")     #ファイルオープン
puts xm.root{
  xm.comment! "コピックのRGBデータ"
  xm.copic{
    f.each{|info|
      if /(^+[A-Z]{1,2})/ =~ info[0] or /¥d{1,3}/ =~ info[0] then
        xm.color("type"=>$&){
          xm.name(info[2])
          xm.number(info[0])
          xm.rgbcode(info[1])
        }
      end
    }
  } 
}
print "ファイルネームを指定してください:"
filename = gets.chop.to_s
File.open("#{filename}.xml","w"){|xml|
  xml << xm
}

0 件のコメント:

コメントを投稿