我们可以吧xml当做数据库,存储一些信息,我们借此实现一个简单的学生管理系统。
创建xml
我们先创建一个xml,存储一些学生的信息。
<?xml version="1.0" encoding="UTF-8"?>
<student>
<stu>
<id>100</id>
<name>weijia</name>
<age>20</age>
</stu>
<stu>
<id>101</id>
<name>lingjie</name>
<age>21</age>
</stu>
</student>
功能实现
创建Student类
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;
}
}
添加学生的方法
/**
* 添加学生
* @param student
* @throws Exception
*/
public static void addStu(Student student) throws Exception {
/**
* 创建解析器; 得到document; 获取到root节点;在根节点上面创建stu标签 ;在stu标签上面依次添加id name
* age;在id name age上面依次添加值 ;回写xml
*/
// 创建解析器
SAXReader reader = new SAXReader();
// 得到document对象
Document document = reader.read("src/student.xml");
// 获取到root节点;
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(student.getAge());
// 回写xml
OutputFormat format = new OutputFormat();
XMLWriter writer = new XMLWriter(new FileOutputStream("src/student.xml"), format);
writer.write(document);
writer.close();
}
删除学生的方法
/**
* 根据学生id删除学生
*
* @param id
* @throws Exception
*/
public static void rmStuById(String id) throws Exception {
// 创建解析器
SAXReader reader = new SAXReader();
// 得到document对象
Document document = reader.read("src/student.xml");
// 获取所有id xpath://id
List<Node> ids = document.selectNodes("//id");
// 遍历所有的id节点
for (Node node : ids) {
// 得到id标签的内容
String str = node.getText();
if (str.equals(id)) {
// 如果内容匹配
// 得到该id的父标签,也就是这个学生的stu标签
Element stu = node.getParent();
// 在根节点下删掉这个元素
document.getRootElement().remove(stu);
}
}
// 回写xml
OutputFormat format = new OutputFormat().createPrettyPrint();
XMLWriter writer = new XMLWriter(
new FileOutputStream("src/student.xml"), format);
writer.write(document);
writer.close();
}
查询学生信息
根据学生的id查询学生的所有信息,打印到屏幕上。
/**
* 根据学生的id查询学生,打印出学生的所有信息
*
* @param id
* @throws Exception
*/
public static void selStuById(String id) throws Exception {
// 创建解析器
SAXReader reader = new SAXReader();
// 得到document对象
Document document = reader.read("src/student.xml");
// 获取所有id xpath://id
List<Node> ids = document.selectNodes("//id");
// 遍历所有的id节点
for (Node node : ids) {
// 得到id标签的内容
String str = node.getText();
if (str.equals(id)) {
// 如果内容匹配
// 得到该id的父标签,也就是这个学生的stu标签
Element stu = node.getParent();
// 得到这个学生下面的所有标签
List<Node> list = stu.elements();
for (Node node2 : list) {
// 打印出各个标签的名字和内容
String name = node2.getName();
String text = node2.getText();
System.out.println(name + ":" + text);
}
}
}
}