2013-10-17 30 views
0

對於大多數REST服務,我們使用XML的自動編組來輸出結果。我們的測試小組報告說他們在結果中出現意外的新行(見下文)。我認爲這兩個結果是等價的,因爲唯一的區別是可忽略的空白,並且測試應該將結果解析爲XML而不進行字符串比較。無論如何,我個人的偏好是提供測試需要的更加清晰的XML版本,但是我的實際方面說不要管它。使用Grails控制XML格式的換行渲染命令

我已經做了一些深入的Grails render命令,但沒有看到任何控制此輸出的方式。我期望在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) 
} 
... 

回答

1

該Grails的具有該唯一配置是grails.converters.xml.pretty.print。根據你的輸出,它似乎設置爲true

看着Groovy,看起來XmlUtil.serialize()將會格式化你需要的方式。所以回去假在Config.groovy中,並改變你的控制器:

String xml = profileService.getProfileByName(param.name) as XML 
render contentType: 'application/xml', text: XmlUtil.serialize(xml) 
+0

一個'grails.converters.xml.pretty.print'項添加到'Config.groovy'在一些解決的問題我們的演示需要「友好」的XML顯示。我在對文件的審查中錯過了這一改變。 一旦我恢復了這一點,就不需要對控制器做任何進一步的修改。 謝謝! – GeoGriffin