表示层:


public class StudentUI {

    //入口
    public static void main(String[] args) throws Exception {
        input();
    }
    public static void input() throws Exception{

        Scanner scanner = new Scanner(System.in);
        System.out.print("学员的编号:");
        String id = scanner.nextLine();
        System.out.print("更新学员的姓名:");
        String name = scanner.nextLine();
        System.out.print("更新学员的年龄:");
        String age = scanner.nextLine();
        Student student = new Student();
        student.setId(id);
        student.setName(name);
        student.setAge(age);
        StudentDao studentDao = new StudentDao();
        studentDao.update(student);

        /*键盘输入学员信息
        Scanner scanner = new Scanner(System.in);
        System.out.print("查询学员的编号:");
        String id = scanner.nextLine();
        StudentDao studentDao = new StudentDao();
        studentDao.read(id);
        Scanner scanner = new Scanner(System.in);
        System.out.print("删除学员的编号:");
        String id = scanner.nextLine();
        StudentDao studentDao = new StudentDao();
        studentDao.delete(id);
        Scanner scanner = new Scanner(System.in);
        System.out.print("用户名:" );
        String name = scanner.nextLine();
        System.out.print("年龄:" );
        String age = scanner.nextLine();
        //封装成JavaBean对象
        Student student = new Student();
        student.setId(IdUtil.getId());
        student.setName(name);
        student.setAge(age);
        //调用Dao对象
        StudentDao studentDao = new StudentDao();
        boolean flag = studentDao.create(student);
        if(flag){
            System.out.println("操作成功");
        }else{
            System.out.println("操作失败");
        }
        */
    }
}

工具:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IDUtil {

    public static  String getID() throws Exception
    {
        //
        BufferedReader br = new BufferedReader(new FileReader("src/day2/mode2/ui/id.txt"));
        String id = br.readLine();      
        int temp = Integer.parseInt(id)+1;  //(int 型)
        BufferedWriter bw = new BufferedWriter(new FileWriter("src/day2/mode2/ui/id.txt"));
        bw.write(temp+"");
        bw.flush();
        bw.close();

        return id;
    }

}

访问层:


import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import cn.itcast.xml.example3.domain.Student;

public class StudentDao {

    //根据编号更新学员信息
    public void update(Student student) throws Exception {
        Document document = getDocument();
        String xpath = "//student[@id='"+student.getId()+"']";
        Element element = (Element) document.selectSingleNode(xpath);
        if(element!=null){
            element.element("name").setText(student.getName());
            element.element("age").setText(student.getAge());
            write2xml(document);
        }else{
            System.out.println("查无此学员");
        }

    }
    //根据编号显示学员信息
    public void read(String id) throws Exception{
        Document document = getDocument();
        String xpath = "//student[@id='"+id+"']";
        Element element = (Element) document.selectSingleNode(xpath);
        if(element!=null){
            System.out.println("编号:" + element.attributeValue("id"));
            System.out.println("姓名:" + element.elementText("name"));
            System.out.println("年龄:" + element.elementText("age"));
        }else{
            System.out.println("查无此学员");
        }
    }
    //根据编号删除某位学员的信息
    public void delete(String id) throws Exception{
        Document document = getDocument();
        String xpath = "//student[@id='"+id+"']";
        Element element = (Element) document.selectSingleNode(xpath);
        if(element!=null){
            element.getParent().remove(element);
            write2xml(document);
        }else{
            System.out.println("查无此学员");
        }
    }

    //增加学员的信息
    public boolean create(Student student) throws Exception{
        boolean flag = false;
        if(student!=null){
            Document document = null;
            try {
                document = getDocument();
            } catch (Exception e) {
                //创建空XML文件
                document = DocumentHelper.createDocument();
                //创建根元素
                document.addElement("students");
            }
            Element rootElement = document.getRootElement();
            Element studentElement = rootElement.addElement("student");
            studentElement.addAttribute("id",student.getId());
            studentElement.addElement("name").setText(student.getName());
            studentElement.addElement("age").setText(student.getAge());
            write2xml(document);
            flag = true;
        }
        return flag;
    }
    //将内存中的Document写到硬盘
    private void write2xml(Document document) throws Exception {
        OutputFormat format = OutputFormat.createPrettyPrint();
        OutputStream os = new FileOutputStream("src/cn/itcast/xml/example3/db/students.xml");
        XMLWriter xmlWriter = new XMLWriter(os,format);
        xmlWriter.write(document);
        xmlWriter.close();
    }
    //取得Document对象
    private Document getDocument() throws Exception {
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(new File("src/cn/itcast/xml/example3/db/students.xml"));
        return document;
    }

}

数据层:



 
   
    keke  
    11 
   

实体层


public class Student {
    private String id;
    private String name;
    private String age;
    public Student(){}
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) throws Exception {
        if(name.matches("[a-zA-Z]+")){
            this.name = name;
        }else{
            throw new Exception();
        }
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) throws Exception {
        if(age.matches("[0-9]+")){
            this.age = age;
        }else{
            throw new Exception();
        }
    }
}

xml小项目学习笔记_第1张图片