2008-10-23 9 views
10

diese Aktion in einer Grails gegeben:Bester Weg, um ziemlich Druck XML-Antwort in Grails

def xml = { 
    rss(version: '2.0') { 
     ... 
    } 
} 
render(contentType: 'application/rss+xml', xml) 

i sehen:

<rss><channel><title></title><description></description><link></link><item></item></channel></rss> 

gibt es einen einfachen Weg, um die xml ziemlich drucken? etwas, das vielleicht in die Rendermethode eingebaut wurde?

Antwort

4

Nach dem reference docs, können Sie die folgende Konfigurationsoption verwenden, um ziemlich Druck aktivieren:

grails.converters.default.pretty.print (Boolean) 
//Whether the default output of the Converters is pretty-printed (default: false) 
19

Dies ist eine einfache Art und Weise zu Pretty-Print XML, nur Groovy Code verwendet:

def xml = "<rss><channel><title></title><description>" + 
    "</description><link></link><item></item></channel></rss>" 

def stringWriter = new StringWriter() 
def node = new XmlParser().parseText(xml); 
new XmlNodePrinter(new PrintWriter(stringWriter)).print(node) 

println stringWriter.toString() 

Ergebnisse in:

<rss> 
    <channel> 
    <title/> 
    <description/> 
    <link/> 
    <item/> 
    </channel> 
</rss> 
+0

muss man sich fragen, warum es nicht ein grooviger Weg, dies zu tun ... – Dan

+1

dies jedoch scheint Leerzeichen in Tags hinzuzufügen, die nicht haben sollte. Es gibt ein paar Hinweise dazu hier: http://jira.codehaus.org/browse/GROOVY-3265 –

3

Verwenden MarkupBuilder zu recht-drucken Sie Ihre Groovy xml

def writer = new StringWriter() 
def xml = new MarkupBuilder (writer) 

xml.rss(version: '2.0') { 
     ... 
    } 
} 

render(contentType: 'application/rss+xml', writer.toString()) 
1

Verwendung XMLUtil:

def xml = "<rss><channel><title></title><description>" + 
    "</description><link></link><item></item></channel></rss>" 

println XmlUtil.serialize(xml) 
+1

für mich (groovige 1.8/Windows-Maschine) das Drucken ohne Einrückung (so nicht schön). – Guillaume