Jaxb Overview
What Is JAXB :
JAXB stands for Java architecture for XML binding.It is used to convert XML to java object and java object to XML.
JAXB defines an API for reading and writing Java objects to and from XML documents.
It provides mechanism to marshal (write) java objects into XML and unmarshal (read) XML into object.
There are two operations you can perform using JAXB
- Marshalling :Converting a java object to XML
- UnMarshalling :Converting a XML to java object
JAXB Marshalling Example: Converting Object into XML :
Create a new Java project called "JAXBMARSHALLING"
Create POJO Class Employee inside com.example.jaxb package.
No extra jaxb libraries are required if you are using JDK1.6 or above, because JAXB is bundled in JDK 1.6.
What Is JAXB :
JAXB stands for Java architecture for XML binding.It is used to convert XML to java object and java object to XML.
JAXB defines an API for reading and writing Java objects to and from XML documents.
It provides mechanism to marshal (write) java objects into XML and unmarshal (read) XML into object.
There are two operations you can perform using JAXB
- Marshalling :Converting a java object to XML
- UnMarshalling :Converting a XML to java object
JAXB Marshalling Example: Converting Object into XML :
Create a new Java project called "JAXBMARSHALLING"
Create POJO Class Employee inside com.example.jaxb package.
No extra jaxb libraries are required if you are using JDK1.6 or above, because JAXB is bundled in JDK 1.6.
For JDK < 1.6, download JAXB from here, and add "jaxb-api.jar" and "jaxb-impl.jar" on your project classpath.
Employee.javapackage com.example.jaxb; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Employee { private int id; private String name; private float salary; private String email; private String department; public Employee() { } public Employee(int id, String name, float salary, String email, String department) { this.id = id; this.name = name; this.salary = salary; this.email = email; this.department = department; } @XmlAttribute public int getId() { return id; } public void setId(int id) { this.id = id; } @XmlElement public String getName() { return name; } public void setName(String name) { this.name = name; } @XmlElement public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } @XmlElement public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @XmlElement public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } }
In the above code
- @XmlRootElement specifies the root element for the xml document.
- @XmlAttribute specifies the attribute for the root element.
- @XmlElement specifies the sub element for the root element.
Convert Object to XML(Marshling)
MarshlingTest.javapackage com.example.jaxb; import java.io.File; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; public class MarshlingTest { public static void main(String[] args) { Employee employee = new Employee(); employee.setId(101); employee.setName("Mukesh"); employee.setDepartment("Finance"); employee.setSalary(50000); employee.setEmail("m@gmail.com"); try { File file = new File("E:\\employee.xml"); JAXBContext jaxbContext = JAXBContext.newInstance(Employee.class); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); // output pretty printed jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); jaxbMarshaller.marshal(employee, file); jaxbMarshaller.marshal(employee, System.out); } catch (JAXBException e) { e.printStackTrace(); } } }
Output :
After running the program employee.xml file will generate in "E" drive
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <employee id="101"> <department>Finance</department> <email>m@gmail.com</email> <name>Mukesh</name> <salary>50000.0</salary> </employee>
Convert XML to Object :
Here we are going to convert employee.xml content into Employee Object.The jaxbMarshaller.unmarshal() contains overloaded methods to achieve this.
MarshlingTest.javapackage com.example.jaxb; import java.io.File; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; public class UnMarshlingExample { public static void main(String[] args) { try { File file = new File("E:\\employee.xml"); JAXBContext jaxbContext = JAXBContext.newInstance(Employee.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Employee employee = (Employee) jaxbUnmarshaller.unmarshal(file); System.out.println("Employee Name: " + employee.getName()); System.out.println("Employee Department: " + employee.getDepartment()); System.out.println("Employee email: " + employee.getEmail()); System.out.println("Employee Salary: " + employee.getSalary()); } catch (JAXBException e) { e.printStackTrace(); } } }
Output :
Employee Name: Mukesh Employee Department: Finance Employee email: m@gmail.com Employee Salary: 50000.0