tl  tr
  Home | Tutorials | Articles | Videos | Products | Tools | Search
Interviews | Open Source | Tag Cloud | Follow Us | Bookmark | Contact   
 XML > JAXB > Unmarshall data using default values

Unmarshall data using default values 

The following example shows unmarshalling an XML using default values. We can specify the default values using defaultValue attribute of @XmlElement annotation.

File Name  :  
com/bethecoder/tutorials/jaxb/common/Student7.java 
   
package com.bethecoder.tutorials.jaxb.common;

import java.util.Date;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD//Allows to get data through fields rather than public getter/setters
public class Student7 {
  
  @XmlElement(defaultValue = "Unknown")
  private String firstName;
  
  @XmlElement(defaultValue = "Unknown")
  private String lastName;
  
  @XmlElement(defaultValue = "-1")
  private int age;
  
  @XmlElement(defaultValue = "Chess")
  private String hobby;
  
  private Date dob;
  
  /**
   * NOTE : Should have a no-arg default constructor.
   */
  public Student7() {
  }

  public Student7(String firstName, String lastName, int age, String hobby,
      Date dob) {
    super();
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.hobby = hobby;
    this.dob = dob;
  }
  
  public String getFirstName() {
    return firstName;
  }
  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }
  public String getLastName() {
    return lastName;
  }
  public void setLastName(String lastName) {
    this.lastName = lastName;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public String getHobby() {
    return hobby;
  }
  public void setHobby(String hobby) {
    this.hobby = hobby;
  }
  public Date getDob() {
    return dob;
  }
  public void setDob(Date dob) {
    this.dob = dob;
  }
  
}
   

File Name  :  
com/bethecoder/tutorials/jaxb/tests/UnmarshallDefaultValues.java 
Author  :  Sudhakar KV
Email  :  [email protected]
   
package com.bethecoder.tutorials.jaxb.tests;

import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import com.bethecoder.tutorials.jaxb.common.Student7;

public class UnmarshallDefaultValues {

  public static void main (String [] argsthrows JAXBException {
    /**
     * Create JAXB Context from the classes to be serialized
     */
    JAXBContext context = JAXBContext.newInstance(Student7.class);  
    Unmarshaller um = context.createUnmarshaller();
    StringReader sr = new StringReader(
        "<student7>" 
        "<firstName>Sriram</firstName>" 
        "<lastName/>" +
        "<age></age>" 
        "</student7>");  
    
    Student7 std = (Student7um.unmarshal(sr);
    System.out.println("Last Name : " + std.getLastName())//Empty tag takes default value 
    System.out.println("Age : " + std.getAge())//Empty tag takes default value
    System.out.println("Hobby : " + std.getHobby());  //No tag doesn't take default value

  }
}
   

It gives the following output,
Last Name : Unknown
Age : -1
Hobby : null



 
  


  
bl  br