}
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
}
Employee类:
package com.sitinspring.objectxml;
import org.dom4j.Element;
public class Employee {
private String name;
private int age;
public Employee(Element element) {
this.name = element.attributeValue("name");
this.age = Integer.parseInt(element.elementText("age"));
}
public Element makeElement(Element parentElm) {
Element element = parentElm.addElement("employee");
element.addAttribute("name", this.name);
Element ageElm = element.addElement("age");
ageElm.setText(String.valueOf(this.age));
return element;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
从上面三个构造函数我们可以发现,传入一个节点,程序会解析这个节点并生成一个对象。
从对象生成XML是构造函数的逆过程,思想是一样的,这里就不赘述了,大家观察三个类中的makeElement函数即可。
调用过程:
package com.sitinspring.objectxml;
import java.io.File;
import java.io.FileWriter;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Test{
public static void main(String[] args){
try{
// 从XML得到对象
SAXReader reader = new SAXReader();
Document document= reader.read(new File("group1.xml"));
Element groupElm=document.getRootElement().element("group");
Group group=new Group(groupElm);
// 从对象得到XML
Document document2 = DocumentHelper.createDocument();
Element root = document2.addElement("root");
Element groupElm2=group.makeElement(root);
XMLWriter writer = new XMLWriter(new FileWriter("group2.xml"));
writer.write(document2);
writer.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}

