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) が定義されている必要があります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください