#!/usr/bin/ruby require "rexml/document" def parse(element) case element.name when "tag" puts "tag: #{element.text}" else element.each { |e| if e.class == REXML::Element then # 再帰処理 puts "elem: #{element.name}" parse( e ) elsif e.class == REXML::Text then puts "text: #{e.to_s}" end } end end doc = nil; filename = ARGV[0] File.open(filename) { |fp| doc = REXML::Document.new fp } doc.elements.each { |element| parse(element) }