« CGIKitでTODOリストを作成する。(3) | メイン | ckgeneratecode »

REXMLでノードの階層構造を出力する

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

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/33

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2005年08月16日 14:34に投稿されたエントリーのページです。

ひとつ前の投稿は「CGIKitでTODOリストを作成する。(3)」です。

次の投稿は「ckgeneratecode」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35