簡體   English   中英

使用Grails渲染命令控制XML格式的換行符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM