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;
}
}
用的是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>
在以前我自己真没有研究过无论是网页还是后台程序怎样返回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>
相关文章推荐
- java使用Xstream注解 解析xml文件 并将数据导入MySql数据库中
- Spring中加载 .properties 文件在java注解中使用及xml的el表达式使用
- java中使用jdom生成百度新闻抓取的xml文件
- Java与XML(二):使用Dom4j 操作 XML 文件
- 使用java.beans.XMLEncoder类把bean转换成XML文件
- java spring配置文件applicationcontext.xml的使用
- 在Java中使用Jdom读取xml配置文件
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(一):消除hibernate中<mapping resouce 的xxxx. hbm.xml文件
- Java使用DOM解析XML文件
- javaWEB项目中使用XSLT解析生成的XML文件
- java学习:使用dom4j读写xml文件
- XML布局文件于Java代码使用问题
- JAVA使用JAXB框架根据schema.xsd文件验证XML合法性
- java使用document方式解析xml文件
- 使用Digester解析XML文件和JAVA对象的映射
- java中使用dom4j读xml文件简单教程
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(一):消除hibernate中<mapping resouce 的xxxx. hbm.xml文件
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(一):消除hibernate中<mapping resouce 的xxxx. hbm.xml文件
- java oject 转化成XML文件,发送请求到服务器,返回XML文件
- Java乔晓松-使用SAX,DOM,pull解析XML文件以及pull解析生成xml文件