import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.jdom.output.Format;
public class DemoDom4j {
/**
* @param args
* @throws IOException
* @throws DocumentException
*/
public static void main(String[] args) throws IOException, DocumentException {
//userDom4jWriterXml();
userDom4jReaderXml();
}
public static void userDom4jReaderXml() throws DocumentException {
SAXReader reader=new SAXReader();
Document document=reader.read("dom4j.xml");
Element rootElement=document.getRootElement();
List<Element> es=rootElement.elements();
for (Element e : es) {
//得到该元素上的所有属性
List<Attribute> as=e.attributes();
for (Attribute a : as) {
System.out.println(a.getName()+"="+a.getValue());
}
//得到该元素下的所有子节点
List<Element> childElement=e.elements();
for (Element child : childElement) {
System.out.println(child.getName()+"="+child.getText());
}
System.out.println("=====================================");
}
}
public static List<Student> initStudent(){
List<Student> stuList=new ArrayList<Student>();
for (int i = 1; i < 5; i++) {
stuList.add(new Student("NO"+i, "JDom_"+i, "男", 20+i, "Jdom__"+i));
}
return stuList;
}
public static void userDom4jWriterXml() throws IOException {
/**
* 在Dom4j中 创建所有的元素都是通过Dom4j的一个辅助类来创建DocumentHelper
* 第一种方式来创建文档的根元素
* //创建文档
Document document = DocumentHelper.createDocument();
//创建一个根元素
Element rootElement=DocumentHelper.createElement("students");
//将根元素添加到文档中
document.setRootElement(rootElement);
*/
//第二种方式来创建文档和文档的根元素
//创建根元素
Element rootElement=DocumentHelper.createElement("students");
//创建文档并以并创建根元素
Document document=DocumentHelper.createDocument(rootElement);
List<Student> stus=initStudent();
for (Student s : stus) {
//创建根元素下的子节点 <student>及添加属性
Element student=rootElement.addElement("student").addAttribute("id", s.getId());
//创建<student>下的子元素
student.addElement("name").addText(s.getName());
student.addElement("sex").addText(s.getSex());
student.addElement("age").addText(s.getAge()+"");
student.addElement("address").addText(s.getAddress());
}
XMLWriter writer=new XMLWriter(
new FileOutputStream(new File("dom4j.xml")),
new OutputFormat(" ",true)
);
writer.write(document);
}
}
===========================================实体类==============================================
package org.demo.dom4j;
import java.io.Serializable;
public class Student implements Serializable {
private String id;
private String name;
private String sex;
private int age;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Student() {
// TODO Auto-generated constructor stub
}
public Student(String id, String name,String sex, int age, String address) {
super();
this.id = id;
this.name = name;
this.sex=sex;
this.age = age;
this.address = address;
}
}