使用JAXB处理JavaBean和XML的转换

来源:互联网 发布:家庭预算软件 编辑:程序博客网 时间:2024/05/17 06:45

完整版见https://jadyer.github.io/2013/03/19/xml-jaxb/



package com.jadyer.jaxb;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;/** * 使用JAXB处理JavaBean和XML的转换 * @create Mar 17, 2013 3:25:49 PM * @author 玄玉<http://blog.csdn/net/jadyer> */public class TestJAXB {public static void main(String[] args) throws JAXBException {StringWriter sw = new StringWriter();Student stu = new Student(1, 22, "Jadyer", new Classroom(11, 2010, "软件技术班"));/** * 生成JAXBContext *///要在JavaBean中使用@XmlRootElement注解指定XML根元素,否则Marshal或者UnMarshal都会失败JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);/** * 将JavaBean编排为XML字符串 */Marshaller marshaller = jaxbContext.createMarshaller();//该值默认为false,true则不会创建即头信息,即<?xml version="1.0" encoding="UTF-8" standalone="yes"?>//marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);//直接输出到控制台//marshaller.marshal(stu, System.out);marshaller.marshal(stu, sw);System.out.println(sw.toString());/** * 将XML字符串反编排为JavaBean */Unmarshaller unMarshaller = jaxbContext.createUnmarshaller();Student student = (Student)unMarshaller.unmarshal(new StringReader(sw.toString()));System.out.println(student.getAge());System.out.println(student.getName());System.out.println(student.getClassroom().getName());}}


下面是用到的两个实体类

package com.jadyer.jaxb;import javax.xml.bind.annotation.XmlRootElement;/** * 必须显式或隐式的提供默认的构造方法 */@XmlRootElementpublic class Student {private int id;              //学生编号private int age;             //学生年龄private String name;         //学生姓名private Classroom classroom; //学生所属班级public Student() {}public Student(int id, int age, String name, Classroom classroom) {this.id = id;this.age = age;this.name = name;this.classroom = classroom;}}/** * 各属性的getter和setter方法略 */public class Classroom {private int id;      //班级编号private int grade;   //班级年级private String name; //班级名称public Classroom() {}public Classroom(int id, int grade, String name) {this.id = id;this.grade = grade;this.name = name;}}

原创粉丝点击