Учитывая это в действии grails:
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? Возможно, что-то встроено в метод рендеринга?





Это простой способ красиво распечатать 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>
Согласно справочные документы, вы можете использовать следующую опцию конфигурации, чтобы включить красивую печать:
grails.converters.default.pretty.print (Boolean)
//Whether the default output of the Converters is pretty-printed ( default: false )
Используйте MarkupBuilder, чтобы красиво распечатать свой Groovy xml
def writer = new StringWriter()
def xml = new MarkupBuilder (writer)
xml.rss(version: '2.0') {
...
}
}
render(contentType: 'application/rss+xml', writer.toString())
Используйте XmlUtil:
def xml = "<rss><channel><title></title><description>" +
"</description><link></link><item></item></channel></rss>"
println XmlUtil.serialize(xml)
для меня (отличная машина 1.8 / windows) это печать без отступов (так что не красиво).
однако это, похоже, добавляет пробелы в теги, которых не должно быть. Здесь есть пара замечаний по этому поводу: jira.codehaus.org/browse/GROOVY-3265