使用Dom4j对xml文件进行增删查改操作(以学生信息管理为例)

1.查询所有学生信息

public List<Student> findAll() {
        // 获取document对象
        document = Dom4jUtils.getDocument(Dom4jUtils.Stu_R_PATH);
        // 获取根节点
        Element root = document.getRootElement();
        // 获取孩子节点
        List<Element> list = root.elements("student");
        // 创建集合
        Student student = new Student();
        // 遍历孩子节点
        ArrayList<Student> students = new ArrayList<Student>();
        for (Element element : list) {
            student = new Student();
            student.setSno(element.attributeValue("sno"));
            student.setName(element.element("name").getText());
            student.setSex(element.element("sex").getText());
            student.setAge(Integer.parseInt(element.element("age").getText()));
            student.setMathScore(Double.parseDouble(element.element("mathScore").getText()));
            student.setJavaScore(Double.parseDouble(element.element("javaScore").getText()));
            student.setEnglishScore(Double.parseDouble(element.element("englishScore").getText()));
            students.add(student);
        }
        return students;
    }

2.根据学生编号查询学生信息 

public Student findById(String id) {

        // 获取document对象
        document = Dom4jUtils.getDocument(Dom4jUtils.Stu_R_PATH);
        // 获取根节点
        Element root = document.getRootElement();
        // 获取子节点
        List<Element> list = root.elements();
        // 获取student对象
        Student student = new Student();
        // 遍历
        for (Element element : list) {
            // 获取节点文本值
            String dId = element.attributeValue("sno");
            // 验证id是否相等
            if (dId.equals(id)){
                student.setSno(element.attributeValue("sno"));
                student.setName(element.element("name").getText());
                student.setSex(element.element("sex").getText());
                student.setAge(Integer.parseInt(element.element("age").getText()));
                student.setMathScore(Double.parseDouble(element.element("mathScore").getText()));
                student.setJavaScore(Double.parseDouble(element.element("javaScore").getText()));
                student.setEnglishScore(Double.parseDouble(element.element("englishScore").getText()));
                return student;
            }
        }
        return null;

    }

3.添加学生

public void add(Student student) {

        // 获取document对象
        document = Dom4jUtils.getDocument(Dom4jUtils.Stu_R_PATH);
        // 获取根节点
        Element root = document.getRootElement();
        // 给节点root创建子节点
        Element dStudent = root.addElement("student");
        // 给节点dStudent创建子节点
        dStudent.addElement("name").setText(student.getName());
        dStudent.addElement("sex").setText(student.getSex());
        dStudent.addElement("age").setText(student.getAge().toString());
        dStudent.addElement("mathScore").setText(student.getMathScore().toString());
        dStudent.addElement("javaScore").setText(student.getJavaScore().toString());
        dStudent.addElement("englishScore").setText(student.getEnglishScore().toString());
        // 给节点dStudent附上属性和属性值
        dStudent.addAttribute("sno", student.getSno());


        Dom4jUtils.saveXML(Dom4jUtils.Stu_W_PATH,document);

    }

4.根据学生编号删除学生信息

 public boolean deleteById(String id) {
        // 获取document对象
        document = Dom4jUtils.getDocument(Dom4jUtils.Stu_R_PATH);
        try {
            // 获取根节点
            Element root = document.getRootElement();
            // 获取子节点
            List<Element> list = root.elements();
            // 转换数据类型
            int dId = Integer.parseInt(id);
            // 获取对象索引
            int i = Integer.parseInt(id.substring(3,4)) -1;
            System.out.println(i);
            for (Element element : list) {
                // 遍历索引
                String sno = element.attributeValue("sno");
                // 判断id是否相等
                if (sno.equals(id)){
                    list.get(i).detach();
                    // 更新并保存
                    Dom4jUtils.saveXML(Dom4jUtils.Stu_W_PATH, document);
                    return true;
                }
            }
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        return false;
    }

5.修改学生信息

public void update(Student student) {
        // 获取document对象
        document = Dom4jUtils.getDocument(Dom4jUtils.Stu_R_PATH);
        // 获取根节点
        Element root = document.getRootElement();
        // 获取子节点
        List<Element> list = root.elements();
        // 获取student对象
        Student dStudent = new Student();
        // 遍历
        for (Element element : list) {
            // 获取节点文本值
            String dId = element.attributeValue("sno");

            // 验证id是否相等
            if (dId.equals(student.getSno())){
                element.addAttribute("sno",student.getSno());
                element.element("name").setText(student.getName());
                element.element("sex").setText(student.getSex());
                element.element("age").setText(student.getAge().toString());
                element.element("mathScore").setText(student.getMathScore().toString());
                element.element("javaScore").setText(student.getJavaScore().toString());
                element.element("englishScore").setText(student.getEnglishScore().toString());

                Dom4jUtils.saveXML(Dom4jUtils.Stu_W_PATH,document);
            }
        }

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值