« Rubyのクラスメソッドをprivateにする方法 | メイン | Rubyのクラスメソッドの別名定義(alias) »

REXML::Element.writeの代わりにREXML::Formattersを使う

Rubyでxmlを編集するために、REXMLで

xml = ''
doc.root.write(xml)

と、REXML::Element.writeを使ったら、

REXML::Element.write is deprecated.  See REXML::Formatters

といわれたので、REXML::Formattersを使ってみました。

xml = ''
formatter = REXML::Formatters::Default.new
formatter.write(doc.root, xml)

REXML::Formatters::Defaultは、XMLをそのまま出力します。

REXML::Formatters::Prettyは、XMLを整形して出力します。

xml = ''
formatter = REXML::Formatters::Pretty.new
formatter.write(doc.root, xml)

REXML::Formatters::Prettyの標準のインデントの空白の数は2です。
コンストラクタに引数を与えることで、空白の数を変更できます。

formatter = REXML::Formatters::Pretty.new(4) #=> インデントの空白の数は4

write()メソッドの引数は、nodeとoutputの2つ。

REXML::Formatters::Default#write(node, output)

nodeのXMLをoutputに出力することになります。
outputはメソッド <<(value) が定義されている必要があります。

トラックバック

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

コメントを投稿

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

About

2008年08月19日 15:01に投稿されたエントリーのページです。

ひとつ前の投稿は「Rubyのクラスメソッドをprivateにする方法」です。

次の投稿は「Rubyのクラスメソッドの別名定義(alias)」です。

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

Powered by
Movable Type 3.35