Jaxb例子

来源:互联网 发布:dem地球软件 编辑:程序博客网 时间:2024/05/19 18:45

JDK6提供的序列化/反序列化工具


实例:

声明两个类,一个是Student类,另一个是Classroom类,Student包含Classroom


package org.itat.xml;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElementpublic 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;@XmlRootElementpublic 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() {}}


进行序列化

@Testpublic 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 blocke.printStackTrace();}}

进行反序列化

@Testpublic 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 blocke.printStackTrace();}}


0 0
原创粉丝点击