利用dom4J 和jaxen 對student.xml 文件進行增刪查
需要dom4j 和jaxen 兩個包
小例子所有文件:
對student.xml 進行增刪查
最初
調用testAdd方法後
調用testGet方法後
調用testDelete方法後
相關代碼:
StudentService.java
package cn.test.service;
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 cn.test.vo.Student;
public class StudentService {
//增加student信息
public static void addStu(Student student) throws Exception{
//獲取根節點
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/student.xml");
Element root =document.getRootElement();
//在根節點中添加子節點stu 在stu節點下 添加子節點 id name age
Element stu = root.addElement("stu");
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 = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/student.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
//刪除student信息
public static void deleteStu(String id) throws Exception{
//獲取文件 將其解析
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/student.xml");
//在文件中挑選名爲id的節點放入list中
List<Node> list =document.selectNodes("//id");
//遍歷list節點元素 先找到id 的父節點 stu 再stu從他的父親節點中刪除
for(Node node : list){
String idv =node.getText();
if(idv.equals(id)){
Element stu =node.getParent();
Element student=stu.getParent();
student.remove(stu);
}
}
//此時 數據保存在內存中而本地xml沒有同步 這時 我們需要內存中的對象 回寫到xml
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/student.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
//查詢
public static void getStu() throws Exception{
//獲取文件 將其解析
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/student.xml");
//在文件中挑選名爲id的節點放入list中
List<Node> list =document.selectNodes("//id");
//遍歷list節點元素 先找到id 的父節點 stu 在將他的子節點中的值取出 並打印
for(Node node : list){
Element stu = node.getParent();
String name=stu.element("name").getText();
String age =stu.element("age").getText();
String id=stu.element("id").getText();
System.out.println(id+" "+name+" "+age);
}
}
}
TestStu.java
package cn.test.test;
import cn.test.service.StudentService;
import cn.test.vo.Student;
public class TestStu {
public static void main(String[] args) throws Exception{
//testAdd();
//testDelete();
//testGet();
}
public static void testAdd() throws Exception{
Student stu =new Student();
stu.setId("101");
stu.setAge("20");
stu.setName("zhangsan");
StudentService.addStu(stu);
}
public static void testDelete() throws Exception{
StudentService.deleteStu("101");
}
public static void testGet() throws Exception{
StudentService.getStu();;
}
}
student.java
此類爲實體類 student 類 包含三個屬性 id name age