xml is used as storage data to realize student management system

This code is used:
xml: store data
dom4j
xpath
java

xml source code:

<?xml version="1.0" encoding="UTF-8"?>

<student> 
  <stu> 
    <id>1009</id>  
    <name>霍元甲</name>  
    <age>35</age> 
  </stu>  
  <stu> 
    <id>1003</id>  
    <name>张飞</name>  
    <age>25</age> 
  </stu>  
  <stu> 
    <id>1002</id>  
    <name>吕布</name>  
    <age>23</age> 
  </stu>  
  <stu>
    <id>1005</id>
    <name>赵云</name>
    <age>26</age>
  </stu>
</student>

Student source code:

package 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;
	}
	
	@Override
	public String toString() {
    
    
		return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	
}

Add, delete and check source code:

package student;

import java.io.FileOutputStream;
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 {
    
    
	//添加元素
	public static void add(Student student) throws Exception {
    
    
		//创建解析器
		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(student.getAge());
		//回写操作
		OutputFormat format=OutputFormat.createPrettyPrint();
		XMLWriter xmlwriter=new XMLWriter(new FileOutputStream("src\\student.xml"), format);
		xmlwriter.write(document);
		xmlwriter.close();
	}
	
	//删除元素,根据学生的id删除
	public static void deleteElement(String id) throws Exception {
    
    
		//创建解析器
		SAXReader saxReader=new SAXReader();
		//得到document
		Document document=saxReader.read("src\\student.xml");
		//得到所有的id的集合,使用xpath的seleteNodes("//id")方法
		List<Node> list=document.selectNodes("//id");
		//遍历集合
		for(Node node:list) {
    
    
			//node是每一个id元素
			//得到id元素里面的值
			String idString=node.getText();
			//判断id里面元素的值和传过去的id是否相同,如果相同,则删除id所在的stu	
			if(idString.equals(id)) {
    
    
				//得到id的父节点stu
				Element stu=node.getParent();
				//得到stu的父节点student
				Element student=stu.getParent();
				//删除stu元素
				student.remove(stu);
			}
		}
		//回写操作
		OutputFormat format=OutputFormat.createPrettyPrint();
		XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src\\student.xml"), format);
		xmlWriter.write(document);
		xmlWriter.close();
	}
	
	//查询元素,根据id查询学生信息
	public static Student searchElement(String id) throws Exception {
    
    
		//创建解析器
		SAXReader saxReader=new SAXReader();
		//得到document
		Document document=saxReader.read("src\\student.xml");
		//得到所有id元素的集合,使用xpath的selectNodes("//id")的方法
		List<Node> list=document.selectNodes("//id");
		//创建一个学生对象
		Student s1=new Student();
		//遍历集合list
		for(Node node:list) {
    
    //每一个node都是id
			//得到id元素的值
			String value=node.getText();
			//判断遍历的id的值和传入的id的值是否一样
			if(value.equals(id)) {
    
    
				//获取id的父节点stu元素
				Element stu=node.getParent();
				//先得到name,age元素,再得到name,age元素的值
				String nameString=stu.element("name").getText();
				String ageString=stu.element("age").getText();
				s1.setId(id);
				s1.setName(nameString);
				s1.setAge(ageString);
			}
		}
		return s1;
	}
}

Test source code:

package student;

public class TestStudent {
    
    

	public static void main(String[] args) throws Exception {
    
    
		// TODO Auto-generated method stub
//		add();
//		delete();
		Search();
	}

	//查询元素
	public static void Search() throws Exception {
    
    
		// TODO Auto-generated method stub
		Student student=StudentService.searchElement("1009");
		System.out.println(student.toString());
	}

	//添加元素
	public static void add() throws Exception {
    
    
		Student s1=new Student();
		s1.setId("1005");
		s1.setName("赵云");
		s1.setAge("26");
		StudentService.add(s1);
	}
	
	//删除元素
	public static void delete() throws Exception{
    
    
		StudentService.deleteElement("1002");
	} 
	
	

}

Guess you like

Origin blog.csdn.net/weixin_44421869/article/details/103050517