该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
【dom4j改造上面exam示列】
修改的类有StudentDom 类和JaxpUtils类剩下两个类,不许要改动,这是代码哦
【 JaxpUtils类】
package com.jack.util;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
//工具类
public class JaxpUtils {
//用来获取dom树
public static Document getDocument() {
//创建dom4j解析器
try{
SAXReader reader = new SAXReader();
Document document = reader.read("src/exam.xml");
return document;
}catch(Exception e){
e.printStackTrace();
}
return null;
}
//保存树到硬盘
public static void write2xml(Document document){
try {
XMLWriter writer = new XMLWriter(new FileOutputStream("src/exam.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();//保存玩关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
【StudentDom 类】
package com.jack.dao;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.w3c.dom.NodeList;
import com.jack.bean.Student;
import com.jack.util.JaxpUtils;
/*
* 将学生添加到xml文件中
* student要添加的学生
* 成功返回true否则返回false
*/
//业务逻辑类
public class StudentDom {
public boolean add(Student student){
//首先加载dom树
Document document = JaxpUtils.getDocument();
//拿到根节点
Element root = document.getRootElement();
//创建一个students节点
Element stu = root.addElement("student").addAttribute("idcard", student.getIdcard())
.addAttribute("examid", student.getExamid());
//添加子节点
stu.addElement("name").setText(student.getName());
stu.addElement("location").setText(student.getLocation());
stu.addElement("grade").setText(student.getGrade()+"");
//将内存保存到硬盘
JaxpUtils.write2xml(document);
return true;
}
/*
* 根据学生姓名删除学生
*/
public boolean delete(String name){
//加载dom树
Document document = JaxpUtils.getDocument();
//获取根节点
Element root = document.getRootElement();
//拿到students节点
List stulist = root.elements("student");
//循环判断
for(int i = 0;i
Element stu = stulist.get(i);
if(stu.elementText("name").equals(name))
{
//找到了父亲干掉儿子
stu.getParent().remove(stu);
//保存结果
JaxpUtils.write2xml(document);
return true;
}
}
return false;
}
/*
*根据证考证号查询学生
*/
public Student findByExamId(String examid){
//加载dom树
Document document = JaxpUtils.getDocument();
//拿去根节点
Element root = document.getRootElement();
//拿去所有的学生节点
List stulist = root.elements("student");
//循环拿去每个stu接待你的examid熟悉进行判断
for(int i = 0;i
//找到这个学生了,开始封装了
Element stuNode = stulist.get(i);
if(stuNode.attributeValue("examid").equals(examid)){
Student s = new Student();
s.setExamid(examid);
s.setIdcard(stuNode.attributeValue("idcard"));
s.setName(stuNode.elementText("name"));
s.setLocation(stuNode.elementText("location"));
s.setGrade(Float.parseFloat(stuNode.elementText("grade")));
//保存
JaxpUtils.write2xml(document);
return s;
}
}
return null;
}
}