您的位置:首页 > 编程语言 > Java开发

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

2016-11-14 10:01 387 查看
工作了也有七个月了,在公司做支付其实感觉自己更多的是熟悉业务。技术方面就是修修补补。真心感觉想学技术难,自己也暗自想了一下前段时间在某支付公司和某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的对象就需要进行些许控制,控制对象的一个最可行的办法就是用注解。
       (jdk 1.6 api:http://www.cs.uic.edu/~mcpc/Java_Docs/api/index.html?javax/xml/bind/JAXBContext.html
 
       比较常用的几个:
       @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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: