JAXB Unmarshalling Example: Converting XML into Object

By the assistance of UnMarshaller interface, we can unmarshal(read) the article into xml archive.

How about we see the progressions to change over XML archive into java object.

  • Make POJO or tie the diagram and create the classes
  • Make the JAXBContext object
  • Make the Unmarshaller articles
  • Call the unmarshal strategy
  • Use getter strategies for POJO to get to the information

Converting xml document into java object

		
 <?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>


POJO classes

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.File;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
 
public class XmlToObject {
	public static void main(String[] args) {
 
	 try {
 
		File file = new File("question.xml");
		JAXBContext jaxbContext = JAXBContext.newInstance(Question.class);
 
		Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
		Question que= (Question) jaxbUnmarshaller.unmarshal(file);
		
		System.out.println(que.getId()+" "+que.getQuestionname());
		System.out.println("Answers:");
		List<Answer>list=que.getAnswers();
		for(Answer ans:list)
		  System.out.println(ans.getId()+" "+ans.getAnswername()+"  "+ans.getPostedby());
 
	  } catch (JAXBException e) {
		e.printStackTrace();
	  }
 
	}
}