JAXB, Java Architecture for XML Binding, it uses JAXB annotations to convert POJO to or from XML file. In this example you will learn how to convert an object / POJO into an XML document using JAXB. The process of converting an object into XML also known as marshalling. JAXB is part of the JDK since 1.6 so you don’t need other library when using JAXB. In this snippet our POJO is a class called Track
as you can see below.
The first thing that we need to do is to annotate the Track
POJO with a couple of JAXB annotations. For this example we add the @XmlRootElement
, @XmlElement
and @XmlAttribute
annotations.
package org.kodejava.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 + ''' +
'}';
}
}
After we have the Track
class annotated we can use the code snippet below to convert the POJO into XML. The steps to do it start by creating an instance of JAXBContext
. From this context
object we create the Marshaller
object. To convert it to XML we called the marshall()
method. The method have many overloads, in this case we just want to print the XML to the System.out
.
package org.kodejava.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();
}
}
}
If you run this code you will get the following output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<track id="1">
<title>Hey Jude</title>
</track>
- How do I install Calibri font in Ubuntu? - January 24, 2021
- How do I create a generic class in Java? - January 1, 2021
- How do I convert java.util.TimeZone to java.time.ZoneId? - April 25, 2020
Great job, thank you.