Ruby 使用REXML保留空白/换行符

Ruby 使用REXML保留空白/换行符,ruby,xml,whitespace,rexml,Ruby,Xml,Whitespace,Rexml,我使用Ruby 1.9.3和REXML解析XML文档,进行一些更改(添加/删除),然后重新输出文件。此文件中有一个块,如下所示: <someElement> some.namespace.something1=somevalue1 some.namespace.something2=somevalue2 some.namespace.something3=somevalue3 </someElement> <someElement> some

我使用Ruby 1.9.3和REXML解析XML文档,进行一些更改(添加/删除),然后重新输出文件。此文件中有一个块,如下所示:

<someElement>
  some.namespace.something1=somevalue1
  some.namespace.something2=somevalue2
  some.namespace.something3=somevalue3
</someElement>
<someElement>
  some.namespace.something1=somevalue1
  some.namespace.something2=somevalue2 some.namespace.something3=somevalue3
</someElement>
xmlFile = File.open(myFile)
contents = xmlFile.read
xmlDoc = REXML::Document.new(contents, { :respect_whitespace => :all })
xmlFile.close

{perform some tasks}

out = ""
xmlDoc.write(out, 2)
File.open(filePath, "w"){|file| file.puts(out)}

我正在寻找一种在使用REXML以这种方式读/写文件时保留元素之间文本空白的方法。我在这里已经阅读了许多关于stackoverflow的其他问题,但是没有一个完全复制了这个场景。欢迎提出任何想法或建议。

我通过删除
Document.write()
缩进(第二个)参数来获得正确的行为:


这看起来像是
Document.write()
中的一个bug,根据我对的阅读,但如果你真的不需要设置缩进,那么不设置缩进应该可以解决你的问题。

我会尝试一下,然后再报告。保留缩进当然是一个优势,因为如果可能的话,我希望该文件保持易于人类阅读;该选项应该覆盖默认值,但似乎不起作用。删除该参数似乎完全解决了问题。我希望我能记得当初为什么把它放在那里。谢谢你的及时回复,非常欢迎。为了澄清我之前的陈述:默认情况下,它保留传入缩进,因此只要它是可读的,并且您在处理过程中没有做任何过激的事情,那么输出也将是可读的。
#xmlDoc.write(out, 2)
xmlDoc.write(out)