1. package com.bjsxt.demo02;
    2. import org.dom4j.Document;
    3. import org.dom4j.DocumentException;
    4. import org.dom4j.Element;
    5. import org.dom4j.io.OutputFormat;
    6. import org.dom4j.io.SAXReader;
    7. import org.dom4j.io.XMLWriter;
    8. import java.io.FileWriter;
    9. import java.io.IOException;
    10. import java.io.Writer;
    11. import java.util.*;
    12. public class CRUD {
    13. Test bo=new Test();
    14. List<Test> li=new ArrayList<>();
    15. //增加
    16. void creat(String num,String name,String type,String price) throws DocumentException, IOException {
    17. //List<CRUD> list=new ArrayList<CRUD>();
    18. SAXReader reader=new SAXReader();//根据xml文件创建DOM树
    19. Document dom = reader.read("D:\\ASXT\\javaSE02\\xml\\book.xml");//解析指定的xml文件
    20. Element rootElement = dom.getRootElement();//获得根节点元素对象
    21. //获得books下的子节点
    22. Element book = rootElement.addElement("book");
    23. book.addAttribute("id", num);
    24. Element num1 = book.addElement("num");
    25. num1.setText(num);
    26. Element name1 = book.addElement("name");
    27. name1.setText(name);
    28. Element type1 = book.addElement("type");
    29. type1.setText(type);
    30. Element price1 = book.addElement("price");
    31. price1.setText(price);
    32. //4.将DOM树最新数据写入XML文件
    33. OutputFormat format = OutputFormat.createPrettyPrint();
    34. format.setEncoding("utf-8");
    35. Writer fw = new FileWriter("D:\\ASXT\\javaSE02\\xml\\book.xml");
    36. XMLWriter xmlWriter = new XMLWriter(fw,format);
    37. xmlWriter.write(dom);
    38. xmlWriter.close();
    39. }
    40. //查询
    41. void retrieve() throws DocumentException {
    42. SAXReader reader=new SAXReader();//根据xml文件创建DOM树
    43. Document dom = reader.read("D:\\ASXT\\javaSE02\\xml\\book.xml");//解析指定的xml文件
    44. Element rootElement = dom.getRootElement();//获得根节点元素对象
    45. //获得books下的子节点
    46. List<Element> book = rootElement.elements("book");
    47. for (Element e:book) {
    48. //获得student下边的子节点
    49. List<Element> Nlist = e.elements();
    50. //e:代表的就是每一个student标签下的子节点
    51. for (Element o:Nlist) {
    52. System.out.println(o.getName()+"--"+o.getText());
    53. if (o.getName().equals("num")){
    54. bo.setNum(o.getText());
    55. }
    56. if (o.getName().equals("name")){
    57. bo.setName(o.getText());
    58. }
    59. if (o.getName().equals("type")){
    60. bo.setType(o.getText());
    61. }
    62. if (o.getName().equals("price")){
    63. bo.setPrice(o.getText());
    64. }
    65. }
    66. li.add(new Test(bo.getNum(),bo.getName(),bo.getType(),bo.getPrice()));
    67. System.out.println("------------------------------------------------");
    68. }
    69. for (Test a:li) {//遍历数组li
    70. System.out.println(a);
    71. }
    72. }
    73. //删除
    74. void delete(String id) throws DocumentException, IOException {
    75. SAXReader reader=new SAXReader();//根据xml文件创建DOM树
    76. Document dom = reader.read("D:\\ASXT\\javaSE02\\xml\\book.xml");//解析指定的xml文件
    77. Element rootElement = dom.getRootElement();//获得根节点元素对象
    78. //获得books下的子节点
    79. List<Element> book = rootElement.elements("book");
    80. for (Element o:book) {
    81. String id1 = o.attributeValue("id");
    82. if (id1.equals(id)){
    83. rootElement.remove(o);
    84. }
    85. }
    86. //4.将DOM树最新数据写入XML文件
    87. OutputFormat format = OutputFormat.createPrettyPrint();
    88. format.setEncoding("utf-8");
    89. Writer fw = new FileWriter("D:\\ASXT\\javaSE02\\xml\\book.xml");
    90. XMLWriter xmlWriter = new XMLWriter(fw,format);
    91. xmlWriter.write(dom);
    92. xmlWriter.close();
    93. }
    94. }
    package com.bjsxt.demo02;
    
    import org.dom4j.DocumentException;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class Test {
        private String id,num,name,type,price;
    
        public Test() {
        }
    
        public Test(String num, String name, String type, String price) {
            this.num = num;
            this.name = name;
            this.type = type;
            this.price = price;
        }
    
        public String getId() {
            id=num;
            return id;
        }
    
        public String getNum() {
            return num;
        }
    
        public void setNum(String num) {
            this.num = num;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public String getPrice() {
            return price;
        }
    
        public void setPrice(String price) {
            this.price = price;
        }
    
        @Override
        public String toString() {
            return "Test{" +
                    "num='" + num + '\'' +
                    ", name='" + name + '\'' +
                    ", type='" + type + '\'' +
                    ", price='" + price + '\'' +
                    '}';
        }
    
        public static void main(String[] args) throws DocumentException, IOException {
            System.out.println("*****欢迎使用图书馆系统******");
            System.out.println("     1.添加图书");
            System.out.println("     2.查询图书");
            System.out.println("     3.删除图书");
            System.out.println("****************************");
    
            //List<CRUD> list=new ArrayList<CRUD>();
            String id,num,name,type,price;
            Test book=new Test();
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入操作编号");
            int n=sc.nextInt();
            CRUD crud = new CRUD();
            switch (n){
                case 1:
                    System.out.println("请输入图书编号");
                    book.setNum(sc.next());
                    System.out.println("请输入图书名称");
                    book.setName(sc.next());
                    System.out.println("请输入图书类型");
                    book.setType(sc.next());
                    System.out.println("请输入图书价格");
                    book.setPrice(sc.next());
                    crud.creat(book.getNum(),book.getName(),book.getType(),book.getPrice());
                    break;
                case 2:
                    crud.retrieve();//查找
                    break;
                case 3:
                    System.out.println("请输入需要删除的图书id");
                    crud.delete(sc.next());
                    break;
                default:
                    System.out.println("编号输入错误,程序结束");
                    System.exit(0);
            }
        }
    }