REXML は私も知りませんが、 compact=
はノード内のテキストの空白を除去するもののようです。
xml
1<hoge>
2 fuga
3</hoge>
↑こんなのを ↓ こんなのにするみたいです。
・・・まだ空白入っていると思うんですけどね。
改行と空白を除去するなら泥臭いですがこんな感じ↓でやるしかないかも知れませんね。
ruby
1require 'rexml/document'
2require 'rexml/formatters/pretty'
3doc = REXML::Document.new <<EOS
4<root>
5 <children>
6 <grandchildren foo='bar'>
7 hoge
8 </grandchildren>
9 </children>
10</root>
11EOS
12
13pretty_formatter = REXML::Formatters::Pretty.new
14output = StringIO.new
15pretty_formatter.write(doc, output)
16
17# 改行 \n とタグ間がからの場合の空白を除去。 タグ(ノード)内の空白はそのまま
18puts output.string.delete("\n").gsub(/> *?</,'><')
↑で↓が得られます。
xml
1<root><children><grandchildren foo='bar'> hoge </grandchildren></children></root>
タグ内のテキストを詰めたいなら pretty_formatter.compact=true
をすれば下記のようになります。
xml
1<root><children><grandchildren foo='bar'> hoge </grandchildren></children></root>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。