JAXB unmarshalling – convert xml into java object example

Unmarshalling is the process of converting xml into java object. The unmarshal() method of JAXB Unmarshaller is used for unmarshalling process.

Steps:

1. Create a pojo class.
2. create JAXB context instance.
3. Create Unmarshaller instance using JAXB context.
4. Call unmarshal() method for unmarshalling process.
5. Process the pojo object.

Example explanation:

Below example have two pojo classes Student and Subject. A Student can have one or more Subject. Pass Student.xml file (generated from previous example) as a parameter in unmarshal() method and cast the return object to Student. Now we have Student object and can process it.

Example:

Student.java

import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
 
/**
 * This class represents a Student.
 * @author w3schools
 */
@XmlRootElement
public class Student {	
	private String name;
	private String rollNo;
	private String className;
	private int age;
	private int id;
	private List<Subject> subject;
 
	//Default constructor
	public Student(){
 
	}
 
	//Parameterised constructor
	public Student(String name, String rollNo, 
			String className, int age, 
                        int id, List<Subject> subject){
		this.name = name;
		this.rollNo = rollNo;
		this.className = className;
		this.age = age;
		this.id = id;
		this.subject = subject;		
	}	
 
	public String getName() {
		return name;
	}
 
	@XmlElement
	public void setName(String name) {
		this.name = name;
	}
 
	public String getClassName() {
		return className;
	}
 
	@XmlElement
	public void setClassName(String className) {
		this.className = className;
	}
 
	public String getRollNo() {
		return rollNo;
	}
 
	@XmlElement
	public void setRollNo(String rollNo) {
		this.rollNo = rollNo;
	}
 
	public int getAge() {
		return age;
	}
 
	@XmlTransient
	public void setAge(int age) {
		this.age = age;
	}
 
	public int getId() {
		return id;
	}
 
	@XmlAttribute
	public void setId(int id) {
		this.id = id;
	}
 
	public List<Subject> getSubject() {
		return subject;
	}
 
	@XmlElement
	public void setSubject(List<Subject> subject) {
		this.subject = subject;
	}
 
}

Subject.java

/**
 * This class represents Address.
 * @author w3schools
 */
public class Subject {	
	private String subjectname;
	private String subjectId;
 
 
	//Default constructor
	public Subject(){
 
	}
 
	//Parameterised constructor
	public Subject(String subjectname, String subjectId){
		this.subjectname = subjectname;
		this.subjectId = subjectId;
	}
 
	public String getSubjectname() {
		return subjectname;
	}
 
	public void setSubjectname(String subjectname) {
		this.subjectname = subjectname;
	}
 
	public String getSubjectId() {
		return subjectId;
	}
 
	public void setSubjectId(String subjectId) {
		this.subjectId = subjectId;
	}
 
}

JAXBTest.java

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
 
/**
 * This is test class for Unmarshalling.
 * @author w3schools
 */
public class JAXBTest {
  public static void main(String args[]){   
    try {
	//create JAXB context
	JAXBContext context = JAXBContext.newInstance(Student.class);
	//Create Unmarshaller using JAXB context
	Unmarshaller unmarshaller  = context.createUnmarshaller();
 
	Student student = (Student) 
		unmarshaller.unmarshal(new File("D:\\Student.xml"));
 
	//Process the Student object
	System.out.println("Student name: " + student.getName());
	System.out.println("Student rollNo: " + student.getRollNo());
 
	for(Subject Subject: student.getSubject()){
		System.out.println("Subject Name: " 
					+ Subject.getSubjectname());
		System.out.println("Subject Id: " 
					+ Subject.getSubjectId());
	}
    } catch (Exception e) {
	e.printStackTrace();
    }
  }
}

Output:

Student name: jai
Student rollNo: MCA/07/06
Subject Name: Java
Subject Id: 1
Subject Name: Oracle
Subject Id: 2

Download this example.
 
Next Topic: How to generate java class from xml schema xsd using jaxb in eclipse.
Previous Topic: JAXB marshalling – convert java object to xml example using multiple pojo.