简介
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
常用注解
常用注解:
@XmlRootElement:
作用和用法:
类级别的注解,将类映射为xml全局元素,也就是根元素。就像spring配置文件中的beans。
@XmlElement:
作用和用法:
字段,方法,参数级别的注解。该注解可以将被注解的字段(非静态),或者被注解的get/set方法对应的字段
映射为本地元素,也就是子元素。
默认使用字段名或get/set方法去掉前缀剩下部分小写作为元素名(在字段名和get/set方法符合命名规范的情况下)。
简单例子
package com.example.eurekahi;
import lombok.Data;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
@Data
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "classes")
public class Classes {
@XmlElement(name = "class")
List<ClassT> classes;
}
@XmlAccessorType(XmlAccessType.FIELD)
@Data
class ClassT {
/**
* <pre>
* 年级ID
* </pre>
*/
private String classId;
/**
* <pre>
* 年级名称
* </pre>
*/
private String className;
@XmlElementWrapper(name = "students")
@XmlElement(name = "student")
List<Student> students;
}
@Data
class Student {
/**
* <pre>
* 学生ID
* </pre>
*/
private String studentId;
/**
* <pre>
* 学生名称
* </pre>
*/
private String studentName;
/**
* <pre>
* 性别
* </pre>
*/
private String sex;
/**
* <pre>
* 年龄
* </pre>
*/
private String age;
}
public static void main(String[] args) {
String xml = "<?xml version="1.0" encoding="UTF-8" ?>\n" +
"<classes>\n" +
" <class>\n" +
" <classId>年级ID</classId>\n" +
" <className>年级名称</className>\n" +
" <students>\n" +
" <student>\n" +
" <studentId>学生ID</studentId>\n" +
" <studentName>学生名称</studentName>\n" +
" <sex>性别</sex>\n" +
" <age>年龄</age>\n" +
" </student>\n" +
" </students>\n" +
" </class>\n" +
"</classes>";
Classes root = (Classes) XMLUtil.convertXmlStrToObject(Classes.class, xml);
System.out.println();
}