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

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>
            <itemsales>
                <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();
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值