JavaBean转化为XML的一些笔记

JABX简介

  JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。

  JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
JDK中JAXB相关的重要Class和Interface:
  JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。
  Marshaller接口,将Java对象序列化为XML数据。
  Unmarshaller接口,将XML数据反序列化为Java对象。
JDK中JAXB相关的重要Annotation:
  @XmlType,将Java类或枚举类型映射到XML模式类型
  @XmlAccessorType(XmlAccessType.FIELD) ,控制字段或属性的序列化。FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
  @XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序。
  @XmlJavaTypeAdapter,使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
  @XmlElementWrapper ,对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
  @XmlRootElement,将Java类或枚举类型映射到XML元素。
  @XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
  @XmlAttribute,将Java类的一个属性映射到与属性同名的一个XML属性。

JABX注解使用
@XmlType 定义映射的一些相关规则
参数:
 propOrder        指定映射XML时的节点顺序
 factoryClass     指定UnMarshal时生成映射类实例所需的工厂类,默认为这个类本身
 factoryMethod  指定工厂类的工厂方法
 name               定义XML Schema中type的名称

 namespace      指定Schema中的命名空间


@XmlAccessorType  定义映射这个类中的何种类型需要映射到XML。可接收四个参数,分别是:

 XmlAccessType.FIELD:映射这个类中的所有字段到XML
 XmlAccessType.PROPERTY:映射这个类中的属性(get/set方法)到XML
 XmlAccessType.PUBLIC_MEMBER:将这个类中的所有public的field或property同时映射到XML(默认)
 XmlAccessType.NONE:不映射


 @XmlAccessorOrder用于对java对象生成的xml元素进行排序。它有两个属性值:

     XmlAccessorOrder.ALPHABETICAL:对生成的xml元素按字母顺序排序;
     XmlAccessorOrder.UNDEFINED:不排序。


@XmlJavaTypeAdapter常用在转换比较复杂的对象时,如map类型或者格式化日期等。使用此注解时,需要自己写一个adapter类继承XmlAdapter抽象类,并实现里面的方法。@XmlJavaTypeAdapter(value=xxx.class),value为自己定义的adapter类

XmlAdapter如下:
@XmlElementWrapper注解表示生成一个包装 XML 表示形式的包装器元素。 此元素主要用于生成一个包装集合的包装器 XML 元素。


@XmlElementWrapper  为数组元素或集合元素定义一个父节点。如,类中有一元素为List items,若不加此注解,该元素将被映射为

    <items>...</items>
    <items>...</items>

这种形式,此注解可将这个元素进行包装,如:

    @XmlElementWrapper(name="items")
    @XmlElement(name="item")
    public List items;

将会生成这样的XML样式:

    <items>
        <item>...</item>
        <item>...</item>
    </items>


@XmlRootElement   将一个Java类映射为一段XML的根节点

参数:
 name            定义这个根节点的名称
 namespace   定义这个根节点命名空间


@XmlElement  指定一个字段或get/set方法映射到XML的节点。如,当一个类的XmlAccessorType 被标注为PROPERTY时,在某一个没有get/set方法的字段上标注此注解,即可将该字段映射到XML。
参数:
         defaultValue 指定节点默认值
         name  指定节点名称
         namespace     指定节点命名空间
         required 是否必须(默认为false)
         nillable 该字段是否包含 nillable="true" 属性(默认为false)
         type  定义该字段或属性的关联类型
@XmlAttribute  指定一个字段或get/set方法映射到XML的属性。
参数:
 name  指定属性名称
 namespace     指定属性命名空间
 required 是否必须(默认为false)


JavaBean
package cn.yunyichina.front.business.his.register.payRegister.vo;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

import cn.yunyichina.front.business.common.util.ShenzhenXmlUtils;

/**
 * @author Yifeng_classmate
 * @create 2018年6月26日
 * @description
 */
@XmlRootElement(name = "Request")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class PayRegisterToHis {
    private String transCode;
    private String date;
    private String patientID;
    private String cardTypeID;
    private String cardNo;
    private String password;
    private String regFlow;
    private String doctorID;
    private String userId;
    private String psOrdNum;
    private String agtOrdNum;
    private String isInsurance;
    private String payMode;
    private String insuredType;
    private String patientType;
    private String clinicCode;
    private String paytime;
    private String fromType;
    private SITransInfo sITransInfo;
    private List<Item> itemList;

    public String getFromType() {
        return fromType;
    }

    @XmlElement(name = "FromType")
    public void setFromType(String fromType) {
        this.fromType = fromType;
    }

    public String getTransCode() {
        return transCode;
    }

    @XmlElement(name = "TransCode")
    public void setTransCode(String transCode) {
        this.transCode = transCode;
    }

    public String getDate() {
        return date;
    }

    @XmlElement(name = "Date")
    public void setDate(String date) {
        this.date = date;
    }

    public String getPatientID() {
        return patientID;
    }

    @XmlElement(name = "PatientID")
    public void setPatientID(String patientID) {
        this.patientID = patientID;
    }

    public String getCardTypeID() {
        return cardTypeID;
    }

    @XmlElement(name = "CardTypeID")
    public void setCardTypeID(String cardTypeID) {
        this.cardTypeID = cardTypeID;
    }

    public String getCardNo() {
        return cardNo;
    }

    @XmlElement(name = "CardNo")
    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }

    public String getPassword() {
        return password;
    }

    @XmlElement(name = "Password")
    public void setPassword(String password) {
        this.password = password;
    }

    public String getRegFlow() {
        return regFlow;
    }

    @XmlElement(name = "RegFlow")
    public void setRegFlow(String regFlow) {
        this.regFlow = regFlow;
    }

    public String getDoctorID() {
        return doctorID;
    }

    @XmlElement(name = "DoctorID")
    public void setDoctorID(String doctorID) {
        this.doctorID = doctorID;
    }

    public String getUserId() {
        return userId;
    }

    @XmlElement(name = "UserId")
    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getPsOrdNum() {
        return psOrdNum;
    }

    @XmlElement(name = "psOrdNum")
    public void setPsOrdNum(String psOrdNum) {
        this.psOrdNum = psOrdNum;
    }

    public String getAgtOrdNum() {
        return agtOrdNum;
    }

    @XmlElement(name = "agtOrdNum")
    public void setAgtOrdNum(String agtOrdNum) {
        this.agtOrdNum = agtOrdNum;
    }

    public String getIsInsurance() {
        return isInsurance;
    }

    @XmlElement(name = "isInsurance")
    public void setIsInsurance(String isInsurance) {
        this.isInsurance = isInsurance;
    }

    public String getPayMode() {
        return payMode;
    }

    @XmlElement(name = "payMode")
    public void setPayMode(String payMode) {
        this.payMode = payMode;
    }

    public String getInsuredType() {
        return insuredType;
    }

    @XmlElement(name = "insuredType")
    public void setInsuredType(String insuredType) {
        this.insuredType = insuredType;
    }

    public String getPatientType() {
        return patientType;
    }

    @XmlElement(name = "patientType")
    public void setPatientType(String patientType) {
        this.patientType = patientType;
    }

    public String getClinicCode() {
        return clinicCode;
    }

    @XmlElement(name = "clinicCode")
    public void setClinicCode(String clinicCode) {
        this.clinicCode = clinicCode;
    }

    public String getPaytime() {
        return paytime;
    }

    @XmlElement(name = "paytime")
    public void setPaytime(String paytime) {
        this.paytime = paytime;
    }

    public SITransInfo getsITransInfo() {
        return sITransInfo;
    }

    @XmlElement(name = "SITransInfo")
    public void setsITransInfo(SITransInfo sITransInfo) {
        this.sITransInfo = sITransInfo;
    }

    public List<Item> getItemList() {
        return itemList;
    }

    @XmlElementWrapper(name = "List")
    @XmlElement(name = "Item")
    public void setItemList(List<Item> itemList) {
        this.itemList = itemList;
    }

    public static class SITransInfo {
        private String sIPatientInfo;
        private String sIInputInfo;
        private String sIOutput;

        public String getsIPatientInfo() {
            return sIPatientInfo;
        }

        @XmlElement(name = "SIPatientInfo")
        public void setsIPatientInfo(String sIPatientInfo) {
            this.sIPatientInfo = sIPatientInfo;
        }

        public String getsIInputInfo() {
            return sIInputInfo;
        }

        @XmlElement(name = "SIInputInfo")
        public void setsIInputInfo(String sIInputInfo) {
            this.sIInputInfo = sIInputInfo;
        }

        public String getsIOutput() {
            return sIOutput;
        }

        @XmlElement(name = "SIOutput")
        public void setsIOutput(String sIOutput) {
            this.sIOutput = sIOutput;
        }

    }

    @XmlRootElement(name = "Item")
    public static class Item {
        private String payTypeID;
        private String payModeName;
        private String openBank;
        private String openAccount;
        private String posTransNo;
        private String amount;

        public String getPayTypeID() {
            return payTypeID;
        }

        @XmlElement(name = "PayTypeID")
        public void setPayTypeID(String payTypeID) {
            this.payTypeID = payTypeID;
        }

        public String getPayModeName() {
            return payModeName;
        }

        @XmlElement(name = "PayModeName")
        public void setPayModeName(String payModeName) {
            this.payModeName = payModeName;
        }

        public String getOpenBank() {
            return openBank;
        }

        @XmlElement(name = "OpenBank")
        public void setOpenBank(String openBank) {
            this.openBank = openBank;
        }

        public String getOpenAccount() {
            return openAccount;
        }

        @XmlElement(name = "OpenAccount")
        public void setOpenAccount(String openAccount) {
            this.openAccount = openAccount;
        }

        public String getPosTransNo() {
            return posTransNo;
        }

        @XmlElement(name = "POSTransNo")
        public void setPosTransNo(String posTransNo) {
            this.posTransNo = posTransNo;
        }

        public String getAmount() {
            return amount;
        }

        @XmlElement(name = "Amount")
        public void setAmount(String amount) {
            this.amount = amount;
        }

    }

输出:

<Request>
	<TransCode/>
	<Date>2018-04-10</Date>
	<PatientID>0000004275</PatientID>
	<CardTypeID>5</CardTypeID>
	<CardNo>0000004275</CardNo>
	<Password/>
	<RegFlow>590</RegFlow>
	<DoctorID>000534</DoctorID>
	<UserId/>
	<psOrdNum>YRP20180410105720000A01</psOrdNum>
	<agtOrdNum>20180410105720000A01</agtOrdNum>
	<isInsurance>0</isInsurance>
	<payMode>1</payMode>
	<insuredType>1</insuredType>
	<patientType>1</patientType>
	<clinicCode>111463173</clinicCode>
	<paytime>2018-04-10 11:18:53</paytime>
	<FromType>4</FromType>
	<SITransInfo>
		<SIPatientInfo/>
		<SIInputInfo/>
		<SIOutput/>
	</SITransInfo>
	<List>
		<Item>
			<PayTypeID>0</PayTypeID>
			<PayModeName/>
			<OpenBank/>
			<OpenAccount/>
			<POSTransNo/>
			<Amount>3300</Amount>
		</Item>
	</List>
</Request>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值