Java&Xml教程(八)使用JDOM将Java对象转换为XML
时间:2017-02-22 14:55
在前面的教程中我们学习了如何使用JDOM解析和修改XML文件内容,本节介绍如何将Java对象转换为XML数据并生成文件。 JDOM的Document类提供了便捷的方法创建元素和属性,XMLOutputter 类能将Document写到任何OutputStream和Writer对象中。 我们将Employee对象id作为XML文件中Employee元素的属性,并且设置根元素Employees的命名空间为“http://www.gxlsystem.com/” 运行程序将获得下面的XML文件: 原文地址:http://www.gxlsystem.com/ 在前面的教程中我们学习了如何使用JDOM解析和修改XML文件内容,本节介绍如何将Java对象转换为XML数据并生成文件。 我们将Employee对象id作为XML文件中Employee元素的属性,并且设置根元素Employees的命名空间为“http://www.gxlsystem.com/” 运行程序将获得下面的XML文件: 以上就是Java&Xml教程(八)使用JDOM将Java对象转换为XML的内容,更多相关内容请关注PHP中文网(www.gxlsystem.com)!
在本例中我们创建Employee对象集合并将它写到XML文件中。
Employee.javapackage 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;
}
}
JDOMXMLWriter.javapackage 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<Employee> 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<Employee> 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));
}
}
employees.xml<?xml version="1.0" encoding="UTF-8"?><Employees xmlns="http://www.journaldev.com/employees">
<Employee xmlns="" id="1">
<age>25</age>
<name>Pankaj</name>
<gender>Male</gender>
<role>Java Developer</role>
</Employee>
<Employee xmlns="" id="2">
<age>34</age>
<name>Mona</name>
<gender>Female</gender>
<role>Manager</role>
</Employee>
<Employee xmlns="" id="3">
<age>45</age>
<name>Dave</name>
<gender>Male</gender>
<role>Support</role>
</Employee></Employees>
JDOM的Document类提供了便捷的方法创建元素和属性,XMLOutputter 类能将Document写到任何OutputStream和Writer对象中。
在本例中我们创建Employee对象集合并将它写到XML文件中。
Employee.javapackage 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;
}
}
JDOMXMLWriter.javapackage 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<Employee> 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<Employee> 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));
}
}
employees.xml<?xml version="1.0" encoding="UTF-8"?><Employees xmlns="http://www.journaldev.com/employees">
<Employee xmlns="" id="1">
<age>25</age>
<name>Pankaj</name>
<gender>Male</gender>
<role>Java Developer</role>
</Employee>
<Employee xmlns="" id="2">
<age>34</age>
<name>Mona</name>
<gender>Female</gender>
<role>Manager</role>
</Employee>
<Employee xmlns="" id="3">
<age>45</age>
<name>Dave</name>
<gender>Male</gender>
<role>Support</role>
</Employee></Employees>