Java如何使用JAXB将对象转换为XML?
JAXB,用于XML绑定的Java体系结构,它使用JAXB批注将POJO转换为XML文件或从XML文件转换POJO。在此示例中,您将学习如何使用JAXB将对象/POJO转换为XML文档。将对象转换为XML的过程也称为封送处理。自1.6版以来,JAXB是JDK的一部分,因此在使用JAXB时不需要其他库。在此片段中,我们的POJO是一个名为的类Track,如下所示。
我们需要做的第一件事是Track用两个JAXB注解对POJO进行注释。在这个例子中,我们添加@XmlRootElement,@XmlElement和@XmlAttribute注解。
package org.nhooo.example.jaxb;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Track {
private Integer id;
private String title;
public Track() {
}
public Integer getId() {
return id;
}
@XmlAttribute
public void setId(Integer id) {
this.id = id;
}
@XmlElement
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String toString() {
return "Track{" +
"id=" + id +
", title='" + title + ''' +
'}';
}
}在给Track类添加注解后,我们可以使用下面的代码片段将POJO转换为XML。首先,创建一个JAXBContext实例。从该上下文对象,我们创建Marshaller对象。为了将其转换为XML,我们调用了marshall()方法。该方法有很多重载,在这种情况下,我们只想将XML打印到System.out。
package org.nhooo.example.jaxb;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class JAXBObjectToXml {
public static void main(String[] args) {
Track track = new Track();
track.setId(1);
track.setTitle("Hey Jude");
try {
JAXBContext context = JAXBContext.newInstance(Track.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(track, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}如果运行此代码,您将获得以下输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<track id="1">
<title>Hey Jude</title>
</track>