2012年4月10日火曜日

XMLからYAMLへ変換

テキストファイルとは言えども生のXMLは読みづらいので、YAMLに変換するRubyスクリプトを書いてみた。

#! /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 件のコメント:

コメントを投稿