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>