REXMLでノードの階層構造を出力する
出力例
html[xmlns="http://www.w3.org/1999/xhtml"]
head[]
meta[content="text/html; charset=UTF-8",http-equiv="Content-Type"]
title[]
body[]
h1[]
h2[]
div[]
form[name="form1",id="form1"]
p[]
br[]
input[name="textfield",type="text"]
ソースコード。
require 'rexml/document'
# 要素を階層表示する
# element 要素
# level 階層レベル
def show_element(element, level)
# 空白
sp = ' ' * level
# 属性
attr = []
element.attributes.each do |name, value|
attr << "#{name}=\"#{value}\""
end
# 出力
puts "#{sp}#{element.name}[#{attr.join(',')}]"
# 子要素
element.each_element do |e|
show_element(e, level + 1)
end
end
if $0 == __FILE__
if ARGV.size < 1
puts "USAGE: ruby #{__FILE__} xmlfilepath"
exit
end
doc = REXML::Document.new(File.new(ARGV[0]))
show_element(doc.root, 0)
end