通讯转换工具开发_webservice储值卡项目总结之XML与对象之间的转换
2016-12-13 15:48
225 查看
POS将报文发送到本系统,系统经过解析,拿出XML字符串部分,如下:
然后写实体类:
用JAXB将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(); } }
相关文章推荐
- 通讯转换工具开发_webservice储值卡项目总结之webservice复杂对象类型
- jackson的使用总结 jason对象xml list之间相互转换
- 一个自己编写的xml和JAVA对象之间的转换工具,xml和对象轻松转换(simple-xml2object)
- 研究一下 项目 webservice xml和java对象的相互自动转换,json和java对象的相互自动转换
- Java开发中对象与Xml之间互相转换
- 使用Castor工具完成Java对象与XML之间的相互转换
- C#对象和XMl文件之间的转换
- Jaxb实现Java对象与XML之间的转换
- 在Rest服务调用中应用JAXB来实现XML与对象之间的转换
- webservice(四)有关xml的操作(基于JAXBContext 的xml和对象的转换)
- JAXB 实现java对象与xml之间互相转换(二)
- 项目开发中XML 读取错误总结
- 利用XStream在Java对象和XML之间相互转换
- 对象与XML之间的转换
- 关于Java对象和XML之间的相互转换
- java 使用XStream Java对象和XML之间的转换
- 项目开发中XML 读取错误总结
- 序列化对象与XML对象之间相互转换
- 跨浏览器开发经验总结(六) —— XML文档处理 & XMLHttpRequest对象
- 用Apache Commons Betwixt2 在XML与Java对象之间相互转换