How to convert object to XML using JAXB?
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 is 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(
"Hola Amiga"
);
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();
}
}
}
Comments
Post a Comment