Java & Xml tutorial (8) Use JDOM to convert Java objects to XML
In the previous tutorial, we learned how to use JDOM to parse and modify the content of an XML file. This section describes how to convert a Java object to XML data and generate a file.
The Document class of JDOM provides convenient methods to create elements and attributes. The XMLOutputter class can write documents to any OutputStream and Writer objects.
In this example, we create a set of Employee objects and write them to an XML file.
Employee. java
package com.journaldev.xml;public class Employee { private int id; private String name; private String gender; private int age; private String role; public Employee(){} public Employee(int id, String name, int age, String gender, String role){ this.id=id; this.age=age; this.name=name; this.gender=gender; this.role=role; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getRole() { return role; } public void setRole(String role) { this.role = role; }}
We use the Employee Object id as the attributes of the Employee element in the XML file, and set the namespace of the root element Employees to "http://www.journaldev.com/employees"
JDOMXMLWriter. java
package com.journaldev.xml.jdom;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.Namespace;import org.jdom2.output.Format;import org.jdom2.output.XMLOutputter;import com.journaldev.xml.Employee;public class JDOMXMLWriter { public static void main(String[] args) throws IOException { List
empList = new ArrayList<>(); empList.add(new Employee(1, "Pankaj",25,"Male","Java Developer")); empList.add(new Employee(2, "Mona",34,"Female","Manager")); empList.add(new Employee(3, "Dave",45,"Male","Support")); String fileName = "employees.xml"; writeFileUsingJDOM(empList, fileName); } private static void writeFileUsingJDOM(List
empList, String fileName) throws IOException { Document doc = new Document(); doc.setRootElement(new Element("Employees", Namespace.getNamespace("http://www.journaldev.com/employees"))); for(Employee emp : empList){ Element employee = new Element("Employee"); employee.setAttribute("id",""+emp.getId()); employee.addContent(new Element("age").setText(""+emp.getAge())); employee.addContent(new Element("name").setText(emp.getName())); employee.addContent(new Element("gender").setText(emp.getGender())); employee.addContent(new Element("role").setText(emp.getRole())); doc.getRootElement().addContent(employee); } //JDOM document is ready now, lets write it to file now XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat()); //output xml to console for debugging //xmlOutputter.output(doc, System.out); xmlOutputter.output(doc, new FileOutputStream(fileName)); }}
Run the program to obtain the following XML file:
Employees. xml
25
Pankaj
Male
Java Developer
34
Mona
Female
Manager
45
Dave
Male
Support