#! /usr/bin/ruby
require 'enumerator'
require 'rexml/document'
require 'yaml'
def xml2tree(node)
ret = {}
key = node.name
val = {}
val['attributes'] = node.attributes
val['text'] = node.text
children = node.enum_for(:each_element).map do |c|
xml2tree(c)
end
val['children'] = children unless children.empty?
ret[key] = val
ret
end
doc = REXML::Document.new(ARGF)
tree = xml2tree(doc.root)
print tree.to_yaml
パスの通ったところにxml2yamlという名前で置いて
% xml2yaml foo.xml | less
のように使う。
0 件のコメント:
コメントを投稿