2011-04-11 56 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

相關問題