[英]Control newlines in XML formatting with Grails render command
對於大多數REST服務,我們使用XML的自動編組來輸出結果。 我們的測試小組報告說他們在結果中得到了意外的新行(請參見下文)。 考慮到唯一的區別是可忽略的空格,並且考慮到測試應該將結果解析為XML而不進行字符串比較,因此我認為這兩個結果是等效的。 無論如何,我個人偏向於提供測試所需的更緊湊的XML版本,但我的實際方面說不要理會它。
我已經完成了Grails 渲染命令的一些工作,但是看不到任何控制此輸出的方法。 我希望可以在Config.groovy中設置一些東西來控制它,但是我也找不到任何東西。 有什么建議么?
我們得到:
<?xml version="1.0" encoding="UTF-8"?>
<profile id="45">
<management id="6"/>
<name>
TESTING_MGT_DOC
</name>
<type>
MGT
</type>
<user id="43"/>
</profile>
測試預期:
<?xml version="1.0" encoding="UTF-8"?>
<profile id="45">
<management id="6"/>
<name>TESTING_MGT_DOC</name>
<type>MGT</type>
<user id="43"/>
</profile>
我們通過控制器中的一個簡單的單行調用來產生這些結果。
從ProfileController.groovy
...
if(param.name){
render profileService.getProfileByName(param.name) as XML
}
...
從ProfileService.groovy
...
def getProfileByName(def name){
return Profile.findByProfileName(name)
}
...
Grails唯一具有的配置是grails.converters.xml.pretty.print
。 根據您的輸出,它似乎設置為true
。
查看Groovy,似乎XmlUtil.serialize()
將格式化所需的方式。 因此,在Config.groovy中返回false,然后將控制器更改為:
String xml = profileService.getProfileByName(param.name) as XML
render contentType: 'application/xml', text: XmlUtil.serialize(xml)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.