XMLファイルの処理

お仕事でXMLファイルをいじくる必要があったので、すこしRubyでやってみた。
Rubyでは、REXMLと言うライブラリを使うらしい。

ぼくの用途としては、既存のXMLファイルをパースして、要素を書き換えて、ファイルにダンプできればよいので、その例を備忘録代わりに載せる。

#!/usr/bin/env ruby1.9 -w

require "rexml/document"

basefile = "Sample.xml"

doc = REXML::Document.new(File.new(basefile))     # XMLファイルをパース

doc.elements.each('GridList/Y/Grid') do |x|
  id = x.attributes["ID"].to_i    # <Grid ID="10">Gridタグの属性を取得
  if (id >= 10 && id <= 48) && id % 2 == 0
    val = x.elements["Position"].text    # <Grid ID="10><Position>1.0</Position>
    newval = val.to_f *2.0
    x.elements["Position"].text = newval.to_s    # 新しい値に更新
  end
end
    
print doc   # ダンプ

他にもXMLのライブラリはあるようだけど、コレが一番簡単そう。