2011-04-11 53 views

回答

18

红宝石核心REXML :: Document有漂亮的印刷:

REXML::Document#write(output=$stdout, indent=-1, transitive=false, ie_hack=false) 

缩进:一个整数。如果-1,则不会使用缩进;否则, 缩进将是这个数字的两倍 的空格,并且子节点将会缩进一个额外的数量。对于 的值为3,每个项目将 缩进3个更多级别,或更多6个 空格(2 * 3)。默认为-1

一个例子:

require "rexml/document" 

doc = REXML::Document.new "<a><b><c>TExt</c><d /></b><b><d/></b></a>" 
out = "" 
doc.write(out, 1) 
puts out 

产地:

<a> 
<b> 
    <c> 
    TExt 
    </c> 
    <d/> 
</b> 
<b> 
    <d/> 
</b> 
</a> 

编辑:的Rails已经REXML加载,所以你只需要产生新的文档,然后写漂亮的打印XML到某个字符串,然后可以将其嵌入到<之前>标记中。

+1

非常感谢。对于单线程,我发现这也起作用:'放入REXML :: Document.new(xml_str).write(“”,1)' – turbo 2016-06-27 20:15:59

1

那么Nokogiri gem呢?这是一个example use

+0

我需要这种方法的xslt?一个非常简单的缩进方法对我来说就足够了。 – 2011-04-11 13:55:20

+0

我从来没有亲自使用这颗宝石,但它看起来像你会需要转换。 – FreeAsInBeer 2011-04-11 13:59:26

+0

它也可以添加到'〜/ .pryrc'中,并且更好地用'STDOUT.puts'代替'puts'调用,所以它在Cucumber中很好地工作,例如。 – 2015-08-05 15:20:18

相关问题