package com.benx.test;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
public class JAXB2 {
public static void main(String[] args) throws JAXBException, IOException {
marshal();
unmarshal();
}
static void marshal() throws JAXBException{
JAXBContext context = JAXBContext.newInstance(Person.class);
Marshaller m = context.createMarshaller();
Person p = new Person("我是谁", "工程师", new Date());
//把生产的xml文件输出到标准流
m.marshal(p, System.out);
}
static void unmarshal() throws JAXBException{
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><person><name>我是谁</name><job>工程师</job><time>2011-06-30 10:13:59</time></person>";
ByteArrayInputStream bos = new ByteArrayInputStream(xml.getBytes());
JAXBContext context = JAXBContext.newInstance(Person.class);
Unmarshaller um = context.createUnmarshaller();
Person p2 = (Person) um.unmarshal(bos);
System.out.println();
System.out.println(p2.name);
}
}
@XmlRootElement
class Person {
@XmlElement
public String name;
@XmlElement
public String job;
@XmlElement
@XmlJavaTypeAdapter(TimeAdapter.class)
public Date time;
public Person() {
}
public Person(String name, String job, Date time) {
super();
this.name = name;
this.job = job;
this.time = time;
}
}
/**
* 时间转换
* @author jin.xiong
*
*/
class TimeAdapter extends XmlAdapter<String, Date> {
private SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* java to xml 把Date转成日期字符形式
*/
public String marshal(Date arg0) throws Exception {
Date date = (Date) arg0;
return dateformat.format(date);
}
/**
* xml to java 把字符转成日期形式
*/
public Date unmarshal(String arg0) throws Exception {
String time = (String) arg0;
return dateformat.parse(time);
}
}
JAXB2
最新推荐文章于 2021-08-31 15:29:53 发布