1 package com.slp.jxmarshaller; 2 3 /** 4 * Created by sanglp on 2017/2/26. 5 */ 6 public class ClassName { 7 private int id; 8 private String name; 9 private int grade; 10 11 public ClassName() { 12 } 13 14 public ClassName(int id, String name, int grade) { 15 this.id = id; 16 this.name = name; 17 this.grade = grade; 18 } 19 20 public int getId() { 21 return id; 22 } 23 24 public void setId(int id) { 25 this.id = id; 26 } 27 28 public String getName() { 29 return name; 30 } 31 32 public void setName(String name) { 33 this.name = name; 34 } 35 36 public int getGrade() { 37 return grade; 38 } 39 40 public void setGrade(int grade) { 41 this.grade = grade; 42 } 43 }
package com.slp.jxmarshaller; import javax.xml.bind.annotation.XmlRootElement; /** * Created by sanglp on 2017/2/26. * [com.sun.istack.internal.SAXException2: 由于类型 "com.slp.jxmarshaller.Student" 缺少 @XmlRootElement 注释, 无法将该类型编集为元素] */ @XmlRootElement public class Student { private int id; private String name; private int age; private ClassName className; 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public ClassName getClassName() { return className; } public void setClassName(ClassName className) { this.className = className; } public Student(int id, String name, int age, ClassName className) { this.id = id; this.name = name; this.age = age; this.className = className; } public Student() { } }
1 package com.slp.jxmarshaller; 2 3 import org.junit.Test; 4 5 import javax.xml.bind.JAXBContext; 6 import javax.xml.bind.JAXBException; 7 import javax.xml.bind.Marshaller; 8 import javax.xml.bind.Unmarshaller; 9 import java.io.StringReader; 10 11 /** 12 * Created by sanglp on 2017/2/26. 13 */ 14 public class TestJaxb { 15 16 /** 17 * 输出结果 18 * <?xml version="1.0" encoding="UTF-8" standalone="yes"?><student><age>21</age><className><grade>2010</grade><id>1</id><name>10数学</name></className><id>1</id><name>张三</name></student> 19 */ 20 @Test 21 public void test01(){ 22 try { 23 JAXBContext ctx = JAXBContext.newInstance(Student.class); 24 Marshaller marshaller = ctx.createMarshaller(); 25 Student student = new Student(1,"张三",21,new ClassName(1,"10数学",2010)); 26 marshaller.marshal(student,System.out); 27 } catch (JAXBException e) { 28 e.printStackTrace(); 29 } 30 } 31 32 33 /** 34 * 张三 10数学 35 */ 36 @Test 37 public void test02(){ 38 String str="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>21</age><className><grade>2010</grade><id>1</id><name>10数学</name></className><id>1</id><name>张三</name></student>\n"; 39 try { 40 JAXBContext ctx = JAXBContext.newInstance(Student.class); 41 Unmarshaller unmarshaller = ctx.createUnmarshaller(); 42 Student stu = (Student) unmarshaller.unmarshal(new StringReader(str)); 43 System.out.println(stu.getName()+" "+stu.getClassName().getName()); 44 } catch (JAXBException e) { 45 e.printStackTrace(); 46 } 47 48 } 49 }