如何控制添加元素的REXML格式?

时间:2009-09-13 14:52:11

标签: xml ruby rexml

我是在一堆XML文件(plists)中添加几个简单元素。我正在处理的现有XML元素如下所示:

<dict>
  <key>background</key>
  <string>#FFFFFF</string>
  <key>caret</key>
  <string>#000000</string>
  <key>foreground</key>
  <string>#000000</string>
  <key>invisibles</key>
  <string>#BFBFBF</string>
  <key>lineHighlight</key>
  <string>#00000012</string>
  <key>selection</key>
  <string>#BAD6FD</string>
</dict>

我在名为settings的对象中捕获了此元素,我正在添加新的<key><string>元素,并向这些元素添加一些文本。到目前为止很简单:

settings.add_element('key').add_text('gutter')
settings.add_element('string').add_text('#282828')

麻烦的是,当我把它写回来时,XML看起来像这样(注意最后一行):

<dict>
  <key>background</key>
  <string>#FFFFFF</string>
  <key>caret</key>
  <string>#000000</string>
  <key>foreground</key>
  <string>#000000</string>
  <key>invisibles</key>
  <string>#BFBFBF</string>
  <key>lineHighlight</key>
  <string>#00000012</string>
  <key>selection</key>
  <string>#BAD6FD</string>
<key>gutter</key><string>#282828</string></dict>

我使用write (REXML::Document)方法写出XML(目前为$ stdout):

tmtheme.write( $stdout )

也试过

tmtheme.write( $stdout, 2 )

但这些并没有带来预期的结果。以下看起来很有希望:

tmtheme.write( $stdout, 2, true )

但这给了我一个known error。更新:刚刚在Ruby 1.9上试过它,虽然我没有得到错误,但它没有帮助 - 我仍然得到格式,如上例所示。

有人能告诉我如何格式化XML以使其符合文档其余部分的格式化风格吗?它不一定需要使用REXML。

1 个答案:

答案 0 :(得分:3)

Robert Klemme和Aaron Patterson came up with the goods在红宝石谈话清单上。

这是我第一次在SoF上提出的问题已经填补了空白。