JAXB:XML与 JavaBean互相转换

一、最简配置

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<dataResult>
    <resultCode>0</resultCode>
    <resultInfo>成功返回数据</resultInfo>
    <data>数据</data>
</dataResult>

 

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="dataResult")
public class CarDataResult {
	
	private String resultCode;
	
	private String resultInfo;
	
	private String data;

    // getter & setter 
}

二、List属性/xml集合节点

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<dataResult>
    <resultCode>0</resultCode>
    <resultInfo>成功返回数据</resultInfo>
    <data>
        <object>
            <JDCSYR>aaa</JDCSYR>
            <SFZMHM>222</SFZMHM>
            <HPHM>ccc</HPHM>
        </object>
        <object>
            <JDCSYR>bbb</JDCSYR>
            <SFZMHM>223</SFZMHM>
            <HPHM>ddd</HPHM>
        </object>
    </data>
</dataResult>
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="dataResult")
public class CarDataResult {
	
	private String resultCode;
	
	private String resultInfo;
	
	@XmlElementWrapper
	@XmlElementRef
	private List<CarData> data;

    // getter & setter 
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="object")
public class CarData {
	private String JDCSYR;
	private String SFZMHM;
	private String HPHM;
    
    //getter & setter
}

三、生成XML时节点顺序配置

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="object")
@XmlType(propOrder = {"JDCSYR", "SFZMHM", "HPHM"}) 
public class CarData {
	private String JDCSYR;
	private String SFZMHM;
	private String HPHM;
    
    //getter & setter
}

 

 

九九、工具类

package com.nssc.utils;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class XmlUtils {

	public static <T> T xmlToBean(String xml, Class<T> clazz) {
		try {
			JAXBContext context = JAXBContext.newInstance(clazz);
			Unmarshaller unmarshaller = context.createUnmarshaller();
			T t = (T) unmarshaller.unmarshal(new StringReader(xml));
			return t;
		} catch (JAXBException e) {
			e.printStackTrace();
			return null;
		}
	}

	public static String beanToXml(Object object) {
		try {
			StringWriter writer = new StringWriter();
			JAXBContext context = JAXBContext.newInstance(object.getClass());
			Marshaller marshal = context.createMarshaller();

			marshal.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
			marshal.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
			marshal.setProperty(Marshaller.JAXB_FRAGMENT, false);
			marshal.setProperty("jaxb.encoding", "utf-8");
			marshal.marshal(object, writer);

			return new String(writer.getBuffer());
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值