English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Spring JAXB

JAXB is Java architecture for XML bindingThe abbreviation. It allows Java developers to map Java classes to XML representations. JAXB can be used to marshall Java objects into XML, and vice versa.

It is the abbreviation provided by Sun for OXM (Object XML Mapping) or O/M framework.


The advantages of JAXB do not require creating or using SAX or DOM parsers, nor do they require writing callback methods.


Example of Spring and JAXB integration (marshalling Java objects into XML)

You need to use JAXB with Spring to marshall Java objects into XML for creating the following files:

Employee.java applicationContext.xml Client.java


Required Jar files

To run this example, you need to load:

Spring Core jar file Spring Web jar file

Download all the jar files of Spring, including core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm, etc.


Employee.java

If three properties, id, name, and salary, are defined. We use the following annotations in this class:

@XmlRootElement It specifies the root element of the XML file. @XmlAttribute It specifies the attribute of the attribute. @XmlElement It specifies the element.

package com.w3codebox;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="employee")
public class Employee {
private int id;
private String name;
private float salary;
@XmlAttribute(name="id")
public int getId() {
  return id;
}
public void setId(int id) {
  this.id = id;
}
@XmlElement(name="name")
public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
@XmlElement(name="salary")
public float getSalary() {}}
  return salary;
}
public void setSalary(float salary) {
  this.salary = salary;
}
}

applicationContext.xml

It defines a Bean jaxbMarshallerBean where the Employee class is bound to the OXM framework.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:oxm="http://www.springframework.org/schema/oxm"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/oxm
      http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">
      
      <oxm:jaxb2-marshaller id="jaxbMarshallerBean">
        <oxm:class-to-be-bound name="com.w3codebox.Employee"/>
      </oxm:jaxb2-marshaller>
</beans>

Client.java

It retrieves an instance of Marshaller from the applicationContext.xml file and calls the marshal method.

package com.w3codebox;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.transform.stream.StreamResult;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.Marshaller;
public class Client{
 public static void main(String[] args) throws IOException{
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  Marshaller marshaller = (Marshaller)context.getBean("jaxbMarshallerBean");
    
  Employee employee = new Employee();
  employee.setId(101);
  employee.setName("Sonoo Jaiswal");
  employee.setSalary(100000);
    
  marshaller.marshal(employee, new StreamResult(new FileWriter("employee.xml")));
  
  System.out.println("XML Created Successfully");
 }
}

Example Output

employee.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee id="101>
<name>Sonoo Jaiswal</name>
<salary>100000.0</salary>
</employee>