JAXB Marshalling Example: Converting Object into XML

By the assistance of Marshaller interface, we can marshal(write) the item into xml report. In the past page, we have seen the basic illustration of changing over item into xml.

We should see the progressions to change over java object into XML report.

  • Make POJO or tie the mapping and create the classes
  • Make the JAXBContext object
  • Make the Marshaller articles
  • Make the substance tree by utilizing set routines
  • Call the marshal system
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Question {
private int id;
private String questionname;
private List<Answer> answers;
public Question() {}
public Question(int id, String questionname, List<Answer> answers) {
	super();
	this.id = id;
	this.questionname = questionname;
	this.answers = answers;
}
@XmlAttribute
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
@XmlElement
public String getQuestionname() {
	return questionname;
}
public void setQuestionname(String questionname) {
	this.questionname = questionname;
}
@XmlElement
public List<Answer> getAnswers() {
	return answers;
}
public void setAnswers(List<Answer> answers) {
	this.answers = answers;
}


}

public class Answer {
private int id;
private String answername;
private String postedby;
public Answer() {}
public Answer(int id, String answername, String postedby) {
	super();
	this.id = id;
	this.answername = answername;
	this.postedby = postedby;
}
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getAnswername() {
	return answername;
}
public void setAnswername(String answername) {
	this.answername = answername;
}
public String getPostedby() {
	return postedby;
}
public void setPostedby(String postedby) {
	this.postedby = postedby;
}

}

import java.io.FileOutputStream;
import java.util.ArrayList;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;


public class ObjectToXml {
public static void main(String[] args) throws Exception{
	JAXBContext contextObj = JAXBContext.newInstance(Question.class);

    Marshaller marshallerObj = contextObj.createMarshaller();
    marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

    Answer ans1=new Answer(101,"java is a programming language","ravi");
    Answer ans2=new Answer(102,"java is a platform","john");
    
    ArrayList<Answer> list=new ArrayList<Answer>();
    list.add(ans1);
    list.add(ans2);
    
    Question que=new Question(1,"What is java?",list);
    marshallerObj.marshal(que, new FileOutputStream("question.xml"));
     
}
}

Output:

The generated xml file

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<question id="1">
    <answers>
        <answername>java is a programming language</answername>
        <id>101</id>
        <postedby>ravi</postedby>
    </answers>
    <answers>
        <answername>java is a platform</answername>
        <id>102</id>
        <postedby>john</postedby>
    </answers>
    <questionname>What is java?</questionname>
</question>