当前位置:编程学习 > XML/UML >>

使用JAXB处理JavaBean和XML的转换

[java]  
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());  
    }  
}  
 
下面是用到的两个实体类
[java]  
package com.jadyer.jaxb;  
  
import javax.xml.bind.annotation.XmlRootElement;  
  
/** 
 * 必须显式或隐式的提供默认的构造方法 
 */  
@XmlRootElement  
public 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;  
    }  
}  
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,