Java 对象转 XML
首先定义需要转换的 Java bean Student.java
@XmlRootElement
public class Student {
private String id;
private String name;
private Integer age;
// setters, getters
}
为了节省篇幅,我省略了对象的setters, getters方法,当然,为了便于直观地看到结果,还应该覆盖默认的 toString() 方法。
这个对象和我们常见的Java对象唯一的不同,就是在普通的Java类上添加了注解@XmlRootElement
。
public static void javaToxml(Student stu) throws Exception {
// 获取JAXB的上下文环境,需要传入具体的 Java bean -> 这里使用Student
JAXBContext context = JAXBContext.newInstance(Student.class);
// 创建 Marshaller 实例
Marshaller marshaller = context.createMarshaller();
// 设置转换参数 -> 这里举例是告诉序列化器是否格式化输出
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
// 构建输出环境 -> 这里使用标准输出,输出到控制台Console
PrintStream out = System.out;
// 将所需对象序列化 -> 该方法没有返回值
marshaller.marshal(stu, out);
}
这里演示了最基本的Java 对象转XML过程。为了方便阅读,每一步都有简明注释。
使用 JAXB 不需要引入第三方依赖jar包。
public static void main(String[] args) throws Exception {
Student stu = new Student("001","Tom",22);
javaToxml(stu);
}
使用main方法简单测试一下,在控制台可以看到如下输出。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
<age>22</age>
<id>001</id>
<name>Tom</name>
</student>
有几点需要注意:
- JAXB 转换对象必须属于
JAXBElement
类型,或者使用@XmlRootElement
注解 - JAXB 转换对象必须拥有无参数构造器(默认存在,如果被覆盖,需要显示指定)