懒人自有懒办法:ResponseXmlWrapper的实现

在基于Grails的开发中,使用代码

 

def databases = Database.findAll()
render databases as XML

 

的话,它输出

 

<?xml version="1.0" encoding="UTF-8"?>
<list>
  <database id="1">
  <description>Our first database</description>
  <entities>
    <entity id="3" />
  </entities>
  <name>db1@grs-cro.com</name>
  </database>
</list>

但是,我还需要一些附加的信息,如msg, status等。

 

如果用groovy.xml.MarkupBuilder的话,需要写遍历对象各属性的代码,觉得这样不爽。放弃。

看了看grails.converters.XML的代码,460的LOC,头大。我不想再造个轮子出来。

 

最后,还是偷懒的办法最好:

class ResponseXmlWrapper {
	static String wrapXml(params) {
		"""
		<?xml version="1.0" encoding="UTF-8"?>
		<response>
		<msg>${params.msg}</msg>
		<status>${params.status}</status>
		<data>
		${params.xml.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "")}
		</data>
		</response>
		"""
	}
}

render ResponseXmlWrapper.wrapXml(msg:"ok", status:"1", xml:(databases as XML) as String)
 

代替

render databases as XML

 

它输出为

 

<?xml version="1.0" encoding="UTF-8"?>
    <response>
	<msg>ok</msg>
	<status>1</status>
	<data>
	    <list>
              <database id="1">
              <description>Our first database</description>
              <entities>
                <entity id="3" />
              </entities>
              <name>db1@grs-cro.com</name>
              </database>
            </list>
	</data>
    </response>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值