JAXB
JAXB:实现xml和java对象互转
JAXB是一个业界的标准,实现XML文件和Java对象的互转。
JAXB是JDK 的组成部分。我们不需要下载第三方jar包 即可做到轻松转换。
复制代码
重要类和接口:
○ JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。
○ Marshaller接口,将Java对象序列化为XML数据。
○ Unmarshaller接口,将XML数据反序列化为Java对象。
复制代码
注解
从XML到Java对象的注解:
○ @XmlType:
○ @XmlElement :将java对象的属性映射为xml的节点
○ @XmlRootElement:此类对应xml的根元素
○ @XmlAttribute :把java对象的属性映射为xml的属性
○ @XmlAccessorType :用于指定由java对象生成xml文件时对java对象属性的访问方式
○ @XmlJavaTypeAdapter :在转换比较复杂的对象时,如map类型或者格式化日期等。使用此注解时,需要自己写一个XmlAdapter类
从Java对象到XML的注解:
○ @XmlAccessorOrder :对java对象生成的xml元素进行排序
○ @XmlTransient :定义某一字段或属性不需要被映射为XML
○ @XmlElementWrapper :为数组元素或集合元素定义一个父节点
复制代码
工程实现
demo1:演示xml基本用法,演示@XmlRootElement 、@XmlAccessorType、@XmlElement的用法
基础POJO类 ClassRoomModel包含一个变量name和变量StudentModel列表
public class StudentModel {
private int id; // 学号
private String name; // 名称
private String sex; // 性别
}
@XmlRootElement(name = "classRoom")
@XmlAccessorType(value = XmlAccessType.FIELD)
public class ClassRoomModel {
@XmlElement(name="name")
private String name;
@XmlElement(name="student")
private List<StudentModel> studentModelList;
}
复制代码
待转化classroom.xml
<?xml version="1.0" encoding="UTF-8"?>
<classRoom>
<name>配置总名称</name>
<student>
<id>1</id>
<name>张三</name>
<sex>男</sex>
</student>
<student>
<id>2</id>
<name>李四</name>
<sex>女</sex>
</student>
</classRoom>
复制代码