下面使用的是JDK自带的类,没有引用任何第三方jar包。
Unmarshaller 类使客户端应用程序能够将 XML 数据转换为 Java 内容对象树。
备注:marshal(序列化、排列、整理)
Marshaller 类使客户端应用程序能够将 Java 内容树转换回 XML 数据。
- packagehb.jaxb;
-
- publicclassClassroom{
- privateintid;
- privateStringname;
- intgrade;
- intgetId(){
- returnid;
- }
- voidsetId(intid){
- this.id=id;
- publicStringgetName(){
- returnname;
- voidsetName(Stringname){
- this.name=name;
- intgetGrade(){
- returngrade;
- voidsetGrade(intgrade){
- this.grade=grade;
- publicClassroom(intid,Stringname,super();
- publicClassroom(){
- }
importjavax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
classStudent{
intage;
privateClassroomclassroom;
intgetAge(){
returnage;
voidsetAge(intage){
this.age=age;
publicClassroomgetClassroom(){
returnclassroom;
voidsetClassroom(Classroomclassroom){
this.classroom=classroom;
publicStudent(intage,Classroomclassroom){
publicStudent(){
}
注意:
1、需要转换的model对象一定要添加@XmlRootElement注解,其里面的其他对象则不需要
2、需要转换的model对象一定要有不带参数的构造方法,包括该对象里面引用的对象。
importjava.io.StringReader;
importjavax.xml.bind.JAXBContext;
importjavax.xml.bind.JAXBException;
importjavax.xml.bind.Marshaller;
importjavax.xml.bind.Unmarshaller;
importorg.junit.Test;
classTestJaxb{
@Test
voidbeanToXML(){
Classroomclassroom=newClassroom(1,"软件工程",4);
Studentstudent=newStudent(101,"张三",0)">22,classroom);
try{
JAXBContextcontext=JAXBContext.newInstance(Student.class);
Marshallermarshaller=context.createMarshaller();
marshaller.marshal(student,System.out);
}catch(JAXBExceptione){
e.printStackTrace();
voidXMLStringToBean(){
StringxmlStr="<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><student><age>22</age><classroom><grade>4</grade><id>1</id><name>软件工程</name></classroom><id>101</id><name>张三</name></student>";
Unmarshallerunmarshaller=context.createUnmarshaller();
Studentstudent=(Student)unmarshaller.unmarshal(newStringReader(xmlStr));
System.out.println(student.getAge());
System.out.println(student.getClassroom().getName());
}
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
JAXBContext 类提供到 JAXB API 的客户端入口点。它提供了管理实现 JAXB 绑定框架操作所需的 XML/Java 绑定信息的抽象,这些操作包括:解组、编组和验证。