使用DOM4J要导包
xml信息
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>苏鸿</name>
<age>20</age>
<school>北方交大</school>
</student>
<student>
<name>李明</name>
<age>21</age>
<school>北大</school>
</student>
</students>
学生对象
package web9_29.lx.lx2;
public class Student {
private String name;
private int age;
private String school;
public Student() {
}
public Student(String name, int age, String school) {
this.name = name;
this.age = age;
this.school = school;
}
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 getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String toString() {
return "Student{name = " + name + ", age = " + age + ", school = " + school + "}";
}
}
DOM4J解析XML
1.读取XML文件,获得document对象
SAXReader saxReader=new SAXReader();
Document doc=saxReader.read(new File("input.xml"));//input是你xml的文件位置
2.//获取文档的根元素
Element root=doc.getRootElement();
3.//获取某接节点的单个子节点
Element nameElement=root.element("name");//name是节点名
4.//获取节点的文本内容
String text=nameElement.getText();
package web9_29.lx.lx2;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class DOM4JStu {
public static void main(String[] args) {
//创建list集合保存学生对象
List<Student> list=new ArrayList<>();
try {
//读取XML文件,获得document对象
SAXReader saxReader=new SAXReader();
Document doc=saxReader.read(new File("src\\web9_29\\lx\\lx2\\Student.xml"));
//获取文档的根元素
Element root=doc.getRootElement();
//遍历根元素的节点元素
Iterator<?> it=root.elementIterator();
while (it.hasNext()){
//创建学生对象
Student student = new Student();
Element stuElement = (Element) it.next();
//获取节点
Element nameElement=stuElement.element("name");
Element ageElement=stuElement.element("age");
Element schoolElement=stuElement.element("school");
//获取节点的文本类容给学生对象
student.setName(nameElement.getText());
student.setAge(Integer.parseInt(ageElement.getText()));
student.setSchool(schoolElement.getText());
//将学生对象添加到list集合中
list.add(student);
}
} catch (DocumentException e) {
e.printStackTrace();
}
//遍历集合
for (Student s : list) {
System.out.println(s);
}
}
}
运行图片
添加学员信息
package web9_29.lx.lx2;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DOM4JStuAdd {
public static void main(String[] args) {
//创建集合存储学生对象
List<Student> list=new ArrayList<>();
//要添加的学生信息
list.add(new Student("赵六",20,"安徽大学"));
list.add(new Student("刘启",21,"安徽大学江淮学员"));
try {
//读取XML文件,获得document对象
SAXReader saxReader = new SAXReader();
Document document=saxReader.read(new File("src\\web9_29\\lx\\lx2\\Student.xml"));
//获取文档的根元素
Element root=document.getRootElement();
for (Student s : list) {
//添加student节点
Element newStudentElement=root.addElement("student");
//在student节点下添加节点name,age,school。并通过学生对象赋值
Element nameElement=newStudentElement.addElement("name");
nameElement.setText(s.getName());
Element ageElement=newStudentElement.addElement("age");
ageElement.setText(String.valueOf(s.getAge()));
Element schoolElement=newStudentElement.addElement("school");
schoolElement.setText(s.getSchool());
}
OutputFormat of=OutputFormat.createPrettyPrint();
//指定编码格式
of.setEncoding("UTF-8");
XMLWriter writer=new XMLWriter(new FileWriter("src\\web9_29\\lx\\lx2\\Student.xml"),of);
writer.write(document);
writer.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行后图片