Meteorを改造

test_xml.rbを次のようにも書けるようにしてみました。

#!bin ruby
# -* coding: UTF-8 -*-
require 'meteor' 

pf = Meteor::ParserFactory.build(Meteor::Parser.XML,"test.xml", "UTF-8")
ps = pf.getParser
#puts ps.document
elm1 = ps.element("test","manbo","manbo")
elm1.attribute("id2","cc")
co_ps = ps.child(elm1)
10000.times { |i|
  co_ps.attribute("manbo",i.to_s)
  elm5 = co_ps.element("tech")
  elm5.attribute("eco","ema")
  elm5.content(i.to_s)
  co_ps.print
}
co_ps.flush
ps.print
puts ps.document

更に次のようにも書けるようにしてみました。

#!bin ruby
# -* coding: UTF-8 -*-
require 'meteor' 

pf = Meteor::ParserFactory.build(Meteor::Parser.XML,"test.xml", "UTF-8")
ps = pf.getParser
#puts ps.document
elm1 = ps.element("test","manbo","manbo")
elm1["id2"]="cc"
co_ps = ps.child(elm1)
10000.times { |i|
  co_ps["manbo"]=i.to_s
  elm5 = co_ps.element("tech")
  elm5["eco"]="ema"
  elm5[":content"]=i.to_s
  co_ps.print
}
co_ps.flush
ps.print
puts ps.document

Ruby演算子オーバーロード(再定義)が可能なので、配列参照演算子
オーバーロードし、実装。


[2008.08.29 : 追記]
メソッド名変更に伴い、上記プログラムを修正しました。