JDK6提供的序列化/反序列化工具
实例:
声明两个类,一个是Student类,另一个是Classroom类,Student包含Classroom
package org.itat.xml;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Student {
private int id;
private String name;
private Classroom classroom;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Classroom getClassroom() {
return classroom;
}
public void setClassroom(Classroom classroom) {
this.classroom = classroom;
}
public Student(int id, String name, Classroom classroom) {
this.id = id;
this.name = name;
this.classroom = classroom;
}
public Student() {
}
}
package org.itat.xml;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Classroom {
private int id;
private String name;
private Classroom classroom;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Classroom(int id, String name) {
this.id = id;
this.name = name;
}
public Classroom() {
}
}
进行序列化
@Test
public void test() {
try {
JAXBContext ctx = JAXBContext.newInstance(Student.class);
Marshaller marshaller = ctx.createMarshaller();
Student stu = new Student(1, "zhangsan", new Classroom(1,"Class one"));
marshaller.marshal(stu, System.out);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
进行反序列化
@Test
public void test02() {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><classroom><id>1</id><name>Class one</name></classroom><id>1</id><name>zhangsan</name></student>";
try {
JAXBContext ctx = JAXBContent.newInstance(Student.class);
Unmarshaller um = ctx.createUnmarshaller();
Student stu = (Student)um.unmarshal(new StringReader(xml));
System.out.println(stu.getName() + " " + stu.getClassroom());
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}