java中的XML注解,使用SpringMVC返回xml文件

本文介绍了在Java SpringMVC中如何使用XML注解来返回XML格式的响应。在工作中,虽然JSON很普遍,但了解如何处理XML依然很重要。通过示例代码,展示了使用JAXBContext进行对象到XML转换的过程,以及返回的XML示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作了也有七个月了,在公司做支付其实感觉自己更多的是熟悉业务。技术方面就是修修补补。真心感觉想学技术难,自己也暗自想了一下前段时间在某支付公司和某o2o公司纠结的时候还真是有些头脑不清醒。下面是我从业务中拿来的代码片段。一起学习和探讨一下。

在以前我自己真没有研究过无论是网页还是后台程序怎样返回xml这档事,因为现在JSON真的很常见了,什么GSON和FASTJSON等等。

言归正传,先直接上代码吧!

@XmlRootElement(name = "package")
public class CashReq extends BaseResponse {
	private Body body;

	@XmlType(namespace = "CashReq")
	@XmlAccessorType(value = XmlAccessType.PROPERTY)
	public static class Body extends ToString {
		private String md5;
		private String merchantNo;
		private String orgNo;
		private String cash;
		private String comTransNo;
		private String createTime;

		public String getMd5() {
			return md5;
		}

		public void setMd5(String md5) {
			this.md5 = md5;
		}

		public String getMerchantNo() {
			return merchantNo;
		}

		public void setMerchantNo(String merchantNo) {
			this.merchantNo = merchantNo;
		}

		public String getOrgNo() {
			return orgNo;
		}

		public void setOrgNo(String orgNo) {
			this.orgNo = orgNo;
		}

		public String getCash() {
			return cash;
		}

		public void setCash(String cash) {
			this.cash = cash;
		}

		public String getComTransNo() {
			return comTransNo;
		}

		public void setComTransNo(String comTransNo) {
			this.comTransNo = comTransNo;
		}

		public String getCreateTime() {
			return createTime;
		}

		public void setCreateTime(String createTime) {
			this.createTime = createTime;
		}
	}

	public Body getBody() {
		return body;
	}

	public void setBody(Body body) {
		this.body = body;
	}

}
/**
 * 响应包括header和body,body可以在派生类中进行扩展
 * 
 * @author dj
 * 
 */
public abstract class BaseResponse extends ToString implements Response {
	private ResponseHeader header;

	public ResponseHeader getHeader() {
		return header;
	}

	public void setHeader(ResponseHeader header) {
		this.header = header;
	}

}

@XmlAccessorType(value = XmlAccessType.PROPERTY)
public class ResponseHeader extends ToString {

	
	// 交易名,原样返回
	private String tradeId;
	// 响应时间戳,yyyyMMddHHmmss
	private String timeStamp;
	// 手机银行流水号,全局唯一
	private String mbsSeqNo;
	// 交易成功标志:true成功,false失败
	private Boolean succeed;
	// 交易返回码,0000成功,否则失败,没有报文体
	private String errCode;
	// 交易返回信息
	private String errMsg;

	public String getTradeId() {
		return tradeId;
	}

	public void setTradeId(String tradeId) {
		this.tradeId = tradeId;
	}

	public String getTimeStamp() {
		return timeStamp;
	}

	public void setTimeStamp(String timeStamp) {
		this.timeStamp = timeStamp;
	}

	public String getMbsSeqNo() {
		return mbsSeqNo;
	}

	public void setMbsSeqNo(String mbsSeqNo) {
		this.mbsSeqNo = mbsSeqNo;
	}

	public Boolean getSucceed() {
		return succeed;
	}

	public void setSucceed(Boolean succeed) {
		this.succeed = succeed;
	}

	public String getErrCode() {
		return errCode;
	}

	public void setErrCode(String errCode) {
		this.errCode = errCode;
	}

	public String getErrMsg() {
		return errMsg;
	}

	public void setErrMsg(String errMsg) {
		this.errMsg = errMsg;
	}

}
/**
 * @Title ToString.java
 * @Description 重写toString方法,打印方便
 * @author dongjie.wang,<a href="mailto:wangdj@cnepay.com">wangdj@cnepay.com</a>
 * @date 2012-5-17 下午10:08:55
 * @version V1.0
 */
public class ToString{
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
	}
}

public @ResponseBody
	SettleMsgQuery settleMsgQuery(){}

用的是jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换。

       如果对要生成的 xml 格式有点些许的限制,就会对生成xml的对象就需要进行些许控制,控制对象的一个最可行的办法就是用注解。
 
       比较常用的几个:
       @XmlRootElement:根节点
       @XmlAttribute:该属性作为xml的attribute
       @XmlElement:该属性作为xml的element,且可以增加属性(name="NewElementName"),那么生成的xml串的elment的标签是NewElementName

返回的样例:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<package>

<header>

<errCode>0000</errCode>

<errMsg>提现成功!</errMsg>

<succeed>true</succeed>

<timeStamp>20160721091256</timeStamp>

</header>

<body>

<comTransNo>123456789</comTransNo>---------------------企业唯一流水号

<createTime>2016-07-21 09:12:56</createTime>-------------成功交易时间

<merchantNo>113805300101798</merchantNo>-------------商户号

<orgNo>IM000030</orgNo>--------------------------------------接入机构号

</body>

</package>




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值