11 Stimmen

Beste Weg, um XML-Antwort in Grails schön drucken

Da dies in einer Grails-Aktion:

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

Ich sehe dies:

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

Gibt es eine einfache Möglichkeit, die XML-Datei schön zu drucken? Vielleicht etwas, das in die Render-Methode integriert ist?

19voto

seansand Punkte 1469

Dies ist eine einfache Möglichkeit, XML mit Hilfe von Groovy-Code hübsch zu drucken:

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()

führt zu:

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

1 Stimmen

Dies scheint jedoch Leerzeichen innerhalb von Tags hinzuzufügen, die dies nicht tun sollten. Dazu gibt es hier ein paar Hinweise: jira.codehaus.org/browse/GROOVY-3265

4voto

Eric Levine Punkte 13396

Nach Angaben der Referenzdokumente können Sie die folgende Konfigurationsoption verwenden, um Pretty-Printing zu aktivieren:

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

3voto

Captian Trips Punkte 49

Verwenden Sie MarkupBuilder, um Ihr Groovy-xml schön zu drucken

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

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

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

3voto

Fabien Barbier Punkte 1504

Verwenden Sie XmlUtil :

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

println XmlUtil.serialize(xml)

5 Stimmen

Bei mir (Groovy 1.8 / Windows-Rechner) wird dies ohne Einrückung gedruckt (also nicht schön).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X