@Data//setter和getter方法,toString和equals,hashcode方法 @EqualsAndHashCode//表明重写equals和hashcode方法 @XmlAccessorType(XmlAccessType.FIELD) public class Classroom { @XmlElement(name="id") private int id; @XmlElement(name="name") private String name; @XmlElement(name="grade") private int grade; public Classroom(int id,String name,int grade){ this.id=id; this.name=name; this.grade=grade; } public Classroom(){//必须包含无参数的构造方法 super(); } } @Data @EqualsAndHashCode(callSuper=false) @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name="student") @ToString(callSuper=true) public class Student { @XmlAttribute(name="ha") private String ha; @XmlElement(name="id") private Integer id; @XmlElement(name="name") private String name; @XmlElement(name="age") private int age; @XmlElement(name="classroom") private Classroom classroom; public Student(){} 测试: public class Test1 { @Test//Java对象转换为xml public void beanToXml(){ Classroom classroom=new Classroom(1,"软件工程",4); Student student=new Student(); student.setClassroom(classroom); student.setHa("你好哈"); try{ JAXBContext context=JAXBContext.newInstance(Student.class); Marshaller marshaller=context.createMarshaller();//将Java序列化为xml marshaller.marshal(student, System.out); System.out.println(); } catch(JAXBException e){ e.printStackTrace(); } } @Test//xml数据转换为Java对象 public void XmlStringToBean(){ String xmlStr="<?xml version=\'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>"; try{ JAXBContext context=JAXBContext.newInstance(Student.class);//是应用的入口,用于管理XML/JAVA绑定信息Unmarshaller unmarshaller=context.createUnmarshaller();//unmarshaller接口,将xml数据反序列化为Java对象 Student student=(Student)unmarshaller.unmarshal(new StringReader(xmlStr)); System.out.println(student.getAge()); System.out.println(student.getClassroom().getName()); } catch(JAXBException e){ e.printStackTrace(); } } }