Лучший способ красиво распечатать ответ XML в Grails - PullRequest
11 голосов
/ 24 октября 2008

Учитывая это в действии Грааля:

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

Я вижу это:

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

Есть ли простой способ красиво распечатать XML? Возможно, что-то встроено в метод рендеринга?

Ответы [ 4 ]

19 голосов
/ 24 октября 2008

Это простой способ красивой печати XML с использованием только кода Groovy:

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

Результат:

<rss>
  <channel>
    <title/>
    <description/>
    <link/>
    <item/>
  </channel>
</rss>
4 голосов
/ 11 августа 2010

Согласно справочному документу , вы можете использовать следующую опцию конфигурации, чтобы включить красивую печать:

 grails.converters.default.pretty.print (Boolean)
 //Whether the default output of the Converters is pretty-printed ( default: false )
3 голосов
/ 13 июня 2011

Используйте MarkupBuilder, чтобы красиво распечатать ваш Groovy xml

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

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

render(contentType: 'application/rss+xml', writer.toString())
2 голосов
/ 01 марта 2012

Использовать XmlUtil:

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

println XmlUtil.serialize(xml)
...