XmlConvertor--JAXBContext
把要转化成Model类传入进newInstance()里
package com.qbsea.xmlconvertor;
import com.qbsea.xmlconvertor.model.CmCore;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
public class XmlConvertor {
public static JAXBContext context;
public static Unmarshaller unmarshaller;
static {
try {
context = JAXBContext.newInstance(CmCore.class);
unmarshaller = context.createUnmarshaller();
} catch (JAXBException e) {
e.printStackTrace();
}
}
public static <T> T getEntity(String xmlStr,Class<T> resultClass) {
StringReader reader = new StringReader(xmlStr);
try {
Object obj = unmarshaller.unmarshal(reader);
return (T)obj;
} catch (JAXBException ex) {
ex.printStackTrace();
return null;
}
}
}
调用入口
参考XML报文
<?xml version="1.0" encoding="UTF-8"?>
<CMCORE xmlns="http://www.cm-inv.com/CMINV/2015/10">
<CMAPI0008Rs>
<CommonRsHdr>
<StatusCode>0000</StatusCode>
<ServerStatusCode>Success</ServerStatusCode>
<SPRsUID>7832</SPRsUID>
<RqUID>b2ebd12a-136b-43wb-s3a1-d9114c481ac2</RqUID>
</CommonRsHdr>
<list>
<cardDef>
<bindingName>name1</bindingName>
<bindingCardNo>cardNo1</bindingCardNo>
<bindingBank>bank1</bindingBank>
<bindingStatus>status01</bindingStatus>
<custId>custId001</custId>
<bankCode>001</bankCode>
<reservePhone>15011111111</reservePhone>
</cardDef>
<cardDef>
<bindingName>name2</bindingName>
<bindingCardNo>cardNo2</bindingCardNo>
<bindingBank>bank2</bindingBank>
<bindingStatus>status02</bindingStatus>
<custId>custId002</custId>
<bankCode>002</bankCode>
<reservePhone>15011111112</reservePhone>
</cardDef>
</list>
</CMAPI0008Rs>
</CMCORE>
xml 对应的实体类
package-info.java
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.cm-inv.com/CMINV/2015/10", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.qbsea.xmlconvertor.model;
CmCore.java
package com.qbsea.xmlconvertor.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
@XmlRootElement(name = "CMCORE")
public class CmCore implements Serializable {
private Cmapi0008rs cmapi0008rs;//绑卡查询结果
@XmlElement(name = "CMAPI0008Rs")
public Cmapi0008rs getCmapi0008rs() {
return cmapi0008rs;
}
public void setCmapi0008rs(Cmapi0008rs cmapi0008rs) {
this.cmapi0008rs = cmapi0008rs;
}
}
CommonRsHdr.java
package com.qbsea.xmlconvertor.model;
import javax.xml.bind.annotation.XmlElement;
import java.io.Serializable;
public class CommonRsHdr implements Serializable{
private String statusCode;
private String serverStatusCode;
private String sPRsUID;
private String rqUID;
//set and get method
@XmlElement(name = "StatusCode")
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
@XmlElement(name = "ServerStatusCode")
public String getServerStatusCode() {
return serverStatusCode;
}
public void setServerStatusCode(String serverStatusCode) {
this.serverStatusCode = serverStatusCode;
}
@XmlElement(name = "SPRsUID")
public String getsPRsUID() {
return sPRsUID;
}
public void setsPRsUID(String sPRsUID) {
this.sPRsUID = sPRsUID;
}
@XmlElement(name = "RqUID")
public String getRqUID() {
return rqUID;
}
public void setRqUID(String rqUID) {
this.rqUID = rqUID;
}
}
Cmapi0008rs.java
package com.qbsea.xmlconvertor.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import java.io.Serializable;
import java.util.List;
public class Cmapi0008rs implements Serializable {
private CommonRsHdr commonRsHdr;
private List<CardDef> cardDefList;
@XmlElement(name = "CommonRsHdr")
public CommonRsHdr getCommonRsHdr() {
return commonRsHdr;
}
public void setCommonRsHdr(CommonRsHdr commonRsHdr) {
this.commonRsHdr = commonRsHdr;
}
@XmlElementWrapper(name="list")
@XmlElement(name="cardDef")
public List<CardDef> getCardDefList() {
return cardDefList;
}
public void setCardDefList(List<CardDef> cardDefList) {
this.cardDefList = cardDefList;
}
}
CardDef.java
package com.qbsea.xmlconvertor.model;
import javax.xml.bind.annotation.XmlElement;
import java.io.Serializable;
public class CardDef implements Serializable{
private String bindingName;
private String bindingCardNo;
private String bindingBank ;
private String bindingStatus ;
private String custId ;
private String bankCode ;
private String reservePhone ;
private String cityCode ;
private String cityName ;
private String provCode ;
private String provName;
private String mainFlag;
private String binddingtime;
//set and get method
@XmlElement(name = "bindingName")
public String getBindingName() {
return bindingName;
}
public void setBindingName(String bindingName) {
this.bindingName = bindingName;
}
@XmlElement(name = "bindingCardNo")
public String getBindingCardNo() {
return bindingCardNo;
}
public void setBindingCardNo(String bindingCardNo) {
this.bindingCardNo = bindingCardNo;
}
@XmlElement(name = "bindingBank")
public String getBindingBank() {
return bindingBank;
}
public void setBindingBank(String bindingBank) {
this.bindingBank = bindingBank;
}
@XmlElement(name = "bindingStatus")
public String getBindingStatus() {
return bindingStatus;
}
public void setBindingStatus(String bindingStatus) {
this.bindingStatus = bindingStatus;
}
@XmlElement(name = "custId")
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
@XmlElement(name = "bankCode")
public String getBankCode() {
return bankCode;
}
public void setBankCode(String bankCode) {
this.bankCode = bankCode;
}
@XmlElement(name = "reservePhone")
public String getReservePhone() {
return reservePhone;
}
public void setReservePhone(String reservePhone) {
this.reservePhone = reservePhone;
}
@XmlElement(name = "cityCode")
public String getCityCode() {
return cityCode;
}
public void setCityCode(String cityCode) {
this.cityCode = cityCode;
}
@XmlElement(name = "cityName")
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
@XmlElement(name = "provCode")
public String getProvCode() {
return provCode;
}
public void setProvCode(String provCode) {
this.provCode = provCode;
}
@XmlElement(name = "provName")
public String getProvName() {
return provName;
}
public void setProvName(String provName) {
this.provName = provName;
}
@XmlElement(name = "mainFlag")
public String getMainFlag() {
return mainFlag;
}
public void setMainFlag(String mainFlag) {
this.mainFlag = mainFlag;
}
@XmlElement(name = "binddingtime")
public String getBinddingtime() {
return binddingtime;
}
public void setBinddingtime(String binddingtime) {
this.binddingtime = binddingtime;
}
}