учитывая xml представляют в виде строки как это:
<some><nested><xml>value</xml></nested></some>
что является наилучшим вариантом (использующий рубин) для форматирования его во что-то читаемое как:
<some>
<nested>
<xml>value</xml>
</nested>
</some>
require "rexml/document"
include REXML
source ='<some><nested><xml>value</xml></nested></some>'
doc = Document.new( source )
doc.write( targetstr = "", 2 ) #indents with 2 spaces
puts targetstr
#write пишет во все, что принимает <<(string), так что это тоже подходит:
doc.write( $stdout, 2 )
doc.write( an_open_file, 2 )
только что заметил, что builder имеет опцию indent
для этого. но, пожалуйста, опубликуйте свои ответы. не каждый, кто хочет это сделать, использует конструктор. кроме того, могут быть более быстрые решения для XML-строк, которые вы не создавали самостоятельно.