argius note

プログラミング関連

REXML DOMの場合

RubyXMLライブラリREXMLを使ってみました。
次のスクリプトは、XMLをタブ区切りテキストに変換します。コマンドラインから渡されたすべてのファイルを繰り返し処理します。

require "rexml/document"

ARGV.each do |path|
  doc = REXML::Document.new File.new(path)
  doc.root.elements.each do |e|
    next unless e.name == "person"
    next if (name = e.attributes["name"]).nil?
    puts [name, e.attributes["age"],].join("\t")
  end
end

XMLデータ。

<?xml version="1.0"?>
<persons>
  <person name="John"    age="23" />
  <person name="Michael" age="35" />
</persons>

結果。

$ ruby rexmltest.rb rexmltest.xml
John    23
Michael 35
$