添加
1、创建解析器
2、得到document
3、获取到根节点
4、在根节点上面创建class标签
5、在class标签依次添加id name age
6、在id name age分别添加值
7、回写xml
删除
1、创建解析器
2、得到document
3、获取到所有的id 使用xpath 返回list集合
4、遍历list集合
5、判断集合里面的id和传递的id是否相同
6、如果相同,把id所在的class删除 (要用父节点去删除)
7、回写xmlx`
查询
1、创建解析器
2、得到document
3、获取到所有的id,返回list集合并遍历
4、得到每一个id的节点,并获取值
5、判断id的值和传递的id是否相同
6、如果相同,获取到id的父节点class,通过class获取到name age值
7、创建student对象,并设置id name age的值
代码
package StudentService;
import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import StudentObject.Student;
public class StuService {
public static void main(String[] args) {
}
//通过查询id返回document
public static Student getStu(String id) throws Exception {
SAXReader sax = new SAXReader();
Document d = sax.read("src/Student.xml");
List<Node> list=d.selectNodes("//id");
Student s = new Student();
for (Node node : list) {
String node1 =node.getText();
if(node1.equals(id)) {
Element par=node.getParent();
String name1=par.element("name").getText();
String age1= par.element("age").getText();
s.setId(node1);
s.setName(name1);
s.setAge(age1);
}
}
return s;
}
//通过id进行删除,所以传递的是id值
public static void delStu(String id) throws Exception {
SAXReader sax = new SAXReader();
Document d = sax.read("src/Student.xml");
//通过xpath的方法获得id节点
List<Node> list =d.selectNodes("//id");
for (Node node : list) {
String s =node.getText();
if(s.equals(id)) {
Element node1=node.getParent();
Element node2 =node1.getParent();
node2.remove(node1);
}
}
XMLWriter xmlw = new XMLWriter(new FileOutputStream("src/Student.xml"),
OutputFormat.createPrettyPrint());
xmlw.write(d);
xmlw.close();
}
//传递的是得到getXX和 set方法的Student
public static void addStu(Student s) throws Exception {
SAXReader sax = new SAXReader();
Document d = sax.read("src/Student.xml");
Element root = d.getRootElement();
Element class1 = root.addElement("class");
Element id1 = class1.addElement("id");
Element name1 = class1.addElement("name");
Element age1 = class1.addElement("age");
id1.setText(s.getId());
name1.setText(s.getName());
age1.setText(s.getAge());
XMLWriter xmlw = new XMLWriter(new FileOutputStream("src/Student.xml"),
OutputFormat.createPrettyPrint());
xmlw.write(d);
xmlw.close();
}
}
package StudentObject;
public class Student {
private String id;
private String name;
private String age;
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 String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
测试
package StudentTest;
import StudentObject.Student;
import StudentService.StuService;
public class Test {
public static void main(String[] args) throws Exception {
// Testadd();
// Testdel();
selectid();
}
public static void selectid() throws Exception {
Student s=StuService.getStu("101");
System.out.println(s.toString());
}
public static void Testdel() throws Exception {
StuService.delStu("103");
}
public static void Testadd() throws Exception {
Student stu = new Student();
stu.setId("103");
stu.setName("王五");
stu.setAge("16");
StuService.addStu(stu);
}
}
xml
<?xml version="1.0" encoding="UTF-8"?>
<Student>
<class>
<id>100</id>
<name>张三</name>
<age>20</age>
</class>
<class>
<id>101</id>
<name>李四</name>
<age>25</age>
</class>
</Student>