我正在尝试将由XML转换器创建的XML片段注入MarkupBuilder。
但是,我无法获得正确的格式设置,而且似乎存在不必要的中间序列化步骤。
import grails.converters.XML
import groovy.xml.MarkupBuilder
//...
def writer = new StringWriter ()
def xml = new MarkupBuilder (writer)
xml.response {
status ("OK")
myList.each { it as XML } //Insert objects by converting to XML
}
println writer.toString()所需产出将是
<response>
<status>OK</status>
<foo>
<field>5</field>
</foo>
<foo>
<field>5</field>
</foo>
</response>我目前的尝试是
def writer = new StringWriter ()
def xml = new MarkupBuilder (writer)
xml.response {
status ("OK")
myList.each {
xml.mkp.yieldUnescaped ( it as XML )
}
}
println writer.toString()但是,当前每个xml片段都由
<?xml version="1.0" encoding="UTF-8"?>有更好的方法来实现这一点吗?
发布于 2011-04-21 12:13:18
更好的方法是将writer直接传递给XML类的render方法,如下所示。
def writer = new StringWriter ()
def xml = new MarkupBuilder (writer)
xml.response {
status ("OK")
def xmlist = myList as XML
xmlist.render(writer)
} 不过,您仍然有一次编码信息,因为render只是将其写入传入的任何writer。
我看到了两个处理这些编码信息的选项:
xml.response {
status ("OK")
def xmlist = myList as XML
xml.mkp.yieldUnescaped (xmlist.toString() - "<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
}https://stackoverflow.com/questions/5726058
复制相似问题