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 }