您的位置:首页 > 其它

通讯转换工具开发_webservice储值卡项目总结之XML与对象之间的转换

2016-12-13 15:48 225 查看
POS将报文发送到本系统,系统经过解析,拿出XML字符串部分,如下:

String xml="<postsvcconsume xmlns=\"http://tempurl.org\">
<astr_request>
<header>
<licensekey></licensekey>
<username></username>
<password></password>
<lang></lang>
<pagerecords>0</pagerecords>
<pageno>0</pageno>
<updatecount>0</updatecount>
<messagetype></messagetype>
<messageid></messageid>
<version></version>
</header>
<svchdr>
<txdate_yyyymmdd>20161213</txdate_yyyymmdd>
<txtime_hhmmss>094324</txtime_hhmmss>
<storecode>XG000093</storecode>
<tillid>01</tillid>
<salesdocno>XG000093012016121300001</salesdocno>
<orgsalesdocno></orgsalesdocno>
<cashiercode>8888</cashiercode>
</svchdr>
<item>
<itemsales>
<itemcode>008801</itemcode>
<salesamount>2.00</salesamount>
</itemsales>
<itemsal
4000
es>
<itemcode>008801</itemcode>
<salesamount>2.00</salesamount>
</itemsales>
</item>
<pay>
<svcpayment>
<svcardno>575556615656565664646464616161616255</svcardno>
<password></password>
<paidamount>2.00</paidamount>
</svcpayment>
<svcpayment>
<svcardno>575556615656565664646464616161616255</svcardno>
<password></password>
<paidamount>2.00</paidamount>
</svcpayment>
</pay>
</astr_request>
</postsvcconsume>";


然后写实体类:

package com.tempurl;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
//@XmlRootElement是指根节点,name对应上根节点名即可
@XmlRootElement(name = "astr_request")
public class Postsvcconsumerequest implements java.io.Serializable {
private Requestheader header;

private Svcconsumehdr svchdr;

private Itemsales[] item;

private Svcpayment[] pay;
//无参构造方法是必须写上的
public Postsvcconsumerequest() {
super();
}

public Postsvcconsumerequest(Requestheader header,
Svcconsumehdr svchdr, Itemsales[] item,Svcpayment[] pay) {
this.header = header;
this.svchdr = svchdr;
this.item = item;
this.pay = pay;
}

public com.jiewen.posp.tempurl.Requestheader getHeader() {
return header;
}

public void setHeader(com.jiewen.posp.tempurl.Requestheader header) {
this.header = header;
}

public com.jiewen.posp.tempurl.Svcconsumehdr getSvchdr() {
return svchdr;
}

public void setSvchdr(com.jiewen.posp.tempurl.Svcconsumehdr svchdr) {
this.svchdr = svchdr;
}

public com.jiewen.posp.tempurl.Itemsales[] getItem() {
return item;
}
//@XmlElementWrapper指数组或者集合,@XmlElement表示子节点
@XmlElementWrapper(name = "item")
@XmlElement(name = "itemsales")
public void setItem(com.jiewen.posp.tempurl.Itemsales[] item) {
this.item = item;
}

public com.jiewen.posp.tempurl.Svcpayment[] getPay() {
return pay;
}
//同上
@XmlElementWrapper(name = "pay")
@XmlElement(name = "svcpayment")
public void setPay(com.jiewen.posp.tempurl.Svcpayment[] pay) {
this.pay = pay;
}
}


用JAXB将XML字符串转成对象:

public void xmlToObject(){
JAXBContext context;
try {
context = JAXBContext.newInstance(Postsvcconsumerequest.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
String requestStr = xml.substring(xml.indexOf("<astr_request>"), xml.indexOf("</postsvcconsume>"));
Postsvcconsumerequest astr_request = (Postsvcconsumerequest) unmarshaller.unmarshal(new StringReader(requestStr));
} catch (JAXBException e) {
e.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: