首先定義需要轉(zhuǎn)換的 Java bean Student.java
@XmlRootElement
public class Student {
private String id;
private String name;
private Integer age;
// setters, getters
}
為了節(jié)省篇幅,我省略了對(duì)象的setters, getters方法,當(dāng)然,為了便于直觀地看到結(jié)果,還應(yīng)該覆蓋默認(rèn)的 toString() 方法。
這個(gè)對(duì)象和我們常見(jiàn)的Java對(duì)象唯一的不同,就是在普通的Java類上添加了注解@XmlRootElement
。
public static void javaToxml(Student stu) throws Exception {
// 獲取JAXB的上下文環(huán)境,需要傳入具體的 Java bean -> 這里使用Student
JAXBContext context = JAXBContext.newInstance(Student.class);
// 創(chuàng)建 Marshaller 實(shí)例
Marshaller marshaller = context.createMarshaller();
// 設(shè)置轉(zhuǎn)換參數(shù) -> 這里舉例是告訴序列化器是否格式化輸出
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
// 構(gòu)建輸出環(huán)境 -> 這里使用標(biāo)準(zhǔn)輸出,輸出到控制臺(tái)Console
PrintStream out = System.out;
// 將所需對(duì)象序列化 -> 該方法沒(méi)有返回值
marshaller.marshal(stu, out);
}
這里演示了最基本的Java 對(duì)象轉(zhuǎn)XML過(guò)程。為了方便閱讀,每一步都有簡(jiǎn)明注釋。
使用 JAXB 不需要引入第三方依賴jar包。
public static void main(String[] args) throws Exception {
Student stu = new Student("001","Tom",22);
javaToxml(stu);
}
使用main方法簡(jiǎn)單測(cè)試一下,在控制臺(tái)可以看到如下輸出。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
<age>22</age>
<id>001</id>
<name>Tom</name>
</student>
有幾點(diǎn)需要注意:
JAXBElement
類型,或者使用 @XmlRootElement
注解
更多建議: