环境:
myeclipse 10
window 10
导入包:dom4j-1.6.1.jar jaxen-1.1-beta-6.jar
代码实现:
<?xml version="1.0" encoding="UTF-8"?>
<student>
<stu>
<id>100</id>
<name>张三</name>
<age>20</age>
</stu>
<stu>
<id>101</id>
<name>李四</name>
<age>30</age>
</stu>
</student>
package com.java.xml;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class StudentService {
/**
* 增加 添加学生信息
* @param student
* @throws DocumentException
* @throws IOException
*/
public static void addStudent(Student student) throws DocumentException, IOException {
/*
* 1.创建解析器
* 2.得到document
* 3.获取根节点
* 4.在根节点上面创建stu标签
* 5.在stu标签上面创建id name age
* 6.分别给id name age元素赋值
* 7.回写xml
*/
//创建解析器
SAXReader saxReader = new SAXReader();
//得到Document
Document document = saxReader.read("src/student.xml");
//获取根节点
Element root = document.getRootElement();
//在根节点上面添加stu标签
Element stu = root.addElement("stu");
//在stu上面添加id name age
Element id = stu.addElement("id");
Element name = stu.addElement("name");
Element age = stu.addElement("age");
//分别给id name age元素赋值
id.setText(student.getId());
name.setText(student.getName());
age.setText(String.valueOf(student.getAge()));
//回写xml
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/student.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
/**
* 删除 根据id删除学生
* @param id
* @throws DocumentException
* @throws IOException
*/
public static void deleteStudent(String id) throws DocumentException, IOException {
/*
* 1.创建解析器
* 2.得到document
* 3.获取所有的id,使用xpath //id 返回 list集合
* 4.遍历list集合
* 5.判断集合里面的id和传递的id是否相同
* 6.如果相同把id所在的stu删除
* 7.回写xml
*/
//创建解析器
SAXReader saxReader = new SAXReader();
//得到document
Document document = saxReader.read("src/student.xml");
//获取所有的id
List<Node> list = document.selectNodes("//id");
//遍历list集合
for (Node node : list) {
//node是每一个id的元素,得到id的值
String value = node.getText();
//判断value与传递的id是否相同
if(value.equals(id)) {
//id相同,得到stu标签
Element stu = node.getParent();
//获取stu的父节点
Element student = stu.getParent();
//删除stu
student.remove(stu);
}
}
//回写xml
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/student.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
/**
* 查询 根据id查询学生信息
* @param id
* @throws DocumentException
*/
public static Student getStudent(String id) throws DocumentException {
/*
* 1.创建解析器
* 2.得到document
* 3.获取所有的id,返回list集合
* 4.遍历list集合
* 5.得到每一个id的节点
* 6.得到id的节点值
* 7.判断id的值与传递的值是否相同
* 8.如果相同,先获取到父节点stu
* 9.通过stu获取到name,age
*/
//创建解析器
SAXReader saxReader = new SAXReader();
//得到document
Document document = saxReader.read("src/student.xml");
//获取所有的id,得到集合list
List<Node> list = document.selectNodes("//id");
//创建Student对象
Student student = new Student();
//遍历集合list
for (Node node : list) {
//node是每一个id节点,得到id节点的值
String value = node.getText();
//判读值是否与传入的相同
if(value.equals(id)) {
//得到id的父节点
Element stu = node.getParent();
//通过stu获取name,age
String name = stu.element("name").getText();
String age = stu.element("age").getText();
student.setId(value);
student.setName(name);
student.setAge(Integer.parseInt(age));
}
}
return student;
}
}
package com.java.xml;
import java.io.IOException;
import org.dom4j.DocumentException;
public class StudentCRUD {
public static void main(String[] args) throws DocumentException, IOException {
// addStudent();
// deleteStudent("102");
getStudent("101");
}
public static void addStudent() throws DocumentException, IOException {
Student student = new Student();
student.setId("102");
student.setName("王五");
student.setAge(35);
StudentService.addStudent(student);
}
public static void deleteStudent(String id) throws DocumentException, IOException {
StudentService.deleteStudent(id);
}
public static void getStudent(String id) throws DocumentException {
Student student = StudentService.getStudent(id);
System.out.println(student);
}
}