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

问题描述:

我为一堆XML文件(plists)添加了一些简单的元素。我的工作在现有的XML元素看起来是这样的:如何在添加的元素上控制REXML格式?

<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:

tmtheme.write($stdout) 

也试过

tmtheme.write($stdout, 2) 

但是,这些不会返回所需的结果。以下看起来很有希望:

tmtheme.write($stdout, 2, true) 

但是,这给了我一个known error。更新:刚刚在Ruby 1.9上试过了,虽然我没有得到错误,但它并没有帮助 - 我仍然可以看到上面示例中的格式。

谁能告诉我如何格式化XML,使其符合文档其余部分的格式化风格?它不一定需要用REXML来完成。

+0

你看过REXML :: Formatters :: Pretty吗?但请注意,它可能会在您的 s和 s中添加一些不需要的空白。 – Inshallah 2009-09-13 15:30:54

+0

你是如何编写XML的? – 2009-09-13 15:49:56

+0

感谢您的查询 - 我更新了这个问题。 – 2009-09-13 18:32:07

Robert Klemme和Aaron Patterson came up with the goods在ruby-talk列表上。

这是我第一次在SoF上提出的问题绘制了一个完整的空白。

+0

这是格式化xml文件的简单方法。谢谢。 – spmno 2012-04-23 07:10:03