利用JAXB进行Bean与XML之间的转换

最开始的时候,我们在写实体bean到xml之间的转换一般是通过反射机制手动生成!在进行xml到bean之间的转换则是采用dom4j、sax等解析解析xml然后进行给对象设置值。


现在好了,JavaEE6.0其实自己带了这些功能,发布的说明文章中写的名称是JAXB,下面看看两个例子,其实转换只在2行代码间...


package com.bling;

import java.util.Date;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class UserDetail {

	private int id;
	
	private String niname;
	
	private Date birth;

	public UserDetail() {
		super();
	}

	public UserDetail(int id, String niname, Date birth) {
		super();
		this.id = id;
		this.niname = niname;
		this.birth = birth;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNiname() {
		return niname;
	}

	public void setNiname(String niname) {
		this.niname = niname;
	}

	public Date getBirth() {
		return birth;
	}

	public void setBirth(Date birth) {
		this.birth = birth;
	}
}

note:这个类是一个最最普通的实体了,唯独注意这个类上面的一个annotation注解,这个必须要加上,否则会报错,到时候提示你加上,有兴趣的可以测试。


package com.bling.test;

import java.io.StringReader;
import java.util.Date;

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

import org.junit.Test;

import com.bling.UserDetail;

public class FormatBean {

	@Test
	public void beanToXml(){
		UserDetail ud = new UserDetail(12, "tongxue", new Date(System.currentTimeMillis()-4546546l));
		try {
			JAXBContext jc = JAXBContext.newInstance(ud.getClass());
			jc.createMarshaller().marshal(ud,System.out);
		} catch (JAXBException e) {
			e.printStackTrace();
		}
	}
	
	@Test
	public void xmlToBean(){
		String xml = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?><userDetail><birth>2012-08-16T08:47:51.813+08:00</birth><id>12</id><niname>tongxue</niname></userDetail>";
		try {
			JAXBContext jc = JAXBContext.newInstance(UserDetail.class);
			UserDetail ud = (UserDetail) jc.createUnmarshaller().unmarshal(new StringReader(xml));
			System.out.println(ud.getNiname());
		} catch (JAXBException e) {
			e.printStackTrace();
		}
	}
}

note:执行两个测试就可以了!


总结一下很简单吧!其实JavaEE6.0还是整合了很多实用的功能在里面,要多多利用!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值