zoukankan      html  css  js  c++  java
  • Java从零开始学四十三(DOM4j解析XML)

    一、创建XML

    // 建立XML
        public static void gernatorXML() {
            // 创建Document对象
            Document doc = DocumentHelper.createDocument();
            // 创建根节点students
            Element studentsElement = doc.addElement("students");
            // 创建子节点student
            Element studentElement1 = studentsElement.addElement("student");
            // 添加ID属性
            studentElement1.addAttribute("id", "1001");
            // 添加子节点
            studentElement1.addElement("name").setText("张三");
            studentElement1.addElement("age").setText("18");
            studentElement1.addElement("sex").setText("男");
            studentElement1.addElement("phone").setText("13800138000");
            studentElement1.addElement("address").setText("深圳宝安");
    
            // 再创建同样的2个student节点
            Element studentElement2 = studentsElement.addElement("student");
            // 添加ID属性
            studentElement2.addAttribute("id", "10012");
            // 添加子节点
            studentElement2.addElement("name").setText("李四");
            studentElement2.addElement("age").setText("19");
            studentElement2.addElement("sex").setText("女");
            studentElement2.addElement("phone").setText("13412369854");
            studentElement2.addElement("address").setText("上海");
            // 再创建同样的2个student节点
            Element studentElement3 = studentsElement.addElement("student");
            // 添加ID属性
            studentElement3.addAttribute("id", "10013");
            // 添加子节点
            studentElement3.addElement("name").setText("王五");
            studentElement3.addElement("age").setText("25");
            studentElement3.addElement("sex").setText("女");
            studentElement3.addElement("phone").setText("13410110104");
            studentElement3.addElement("address").setText("广东");
    
            try {
                // 创建XML 将Document写入XML
                // 设置格式
                OutputFormat format = OutputFormat.createPrettyPrint();
                // 设置字符编码也可以设置为gb2312或者gbk
                format.setEncoding("utf-8");
                // 输入
                XMLWriter writer = new XMLWriter(
                        new FileWriter("xml/students.xml"), format);
    
                // 写入文档
                writer.write(doc);
                // 关闭流
                writer.close();
                // 输出提示
                System.out.println("======写入成功=======");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    二、解析XML

        // 读取XML
        public static void getXML() {
    
            try {
                // 读取XML
                SAXReader reader = new SAXReader();
                Document doc = reader.read("xml/students.xml");
                // 获取根节点
                Element root = doc.getRootElement();
                // 获取子节点集合
                List<Element> stulList = root.elements();
                // 遍历
                for (Element ele : stulList) {
                    // 获取属性
                    String id = ele.attributeValue("id");
                    System.out.println("学生ID: " + id);
                    // 获取子节点的文本内容 name
                    String name = ele.elementText("name");
                    // age年龄
                    String age = ele.elementText("age");
                    // sex
                    String sex = ele.elementTextTrim("sex");
                    // phone
                    String phone = ele.elementTextTrim("phone");
                    // address
                    String address = ele.elementTextTrim("address");
                    System.out.println("姓名:" + name + "	年龄:  " + age + "	 性别:  "
                            + sex + "		电话:" + phone + "		地址:  " + address);
                }
    
            } catch (DocumentException e) {
                e.printStackTrace();
            }
    
        }

    三、增加节点

    //增加新的节点
        public static void addXML(){
            
            try {
                //读取XML创建解析器
                SAXReader reader=new SAXReader();
                //创建Document对象
                Document doc=reader.read("xml/students.xml");
                //获取根节点
                Element root=doc.getRootElement();
                //创建新的节点
                Element student=root.addElement("student");
                //添加属性
                student.addAttribute("id", "10020");
                //创建子节点
                student.addElement("name").setText("张三丰");
                student.addElement("age").setText("108");
                student.addElement("sex").setText("男");
                student.addElement("phone").setText("13800138001");
                student.addElement("address").setText("武当山");
                //写入XML
                //设置字符编码和格式
                OutputFormat format=new OutputFormat();
                format.setEncoding("utf-8");
                //创建输出流
                XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
                //写入Document
                writer.write(doc);
                //关闭流
                writer.close();
                //给出提示
                System.out.println("======增加成功=======");
                
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }

    四、修改节点

    //修改节点内容根据 id10013将王五的姓名=王小五,年龄30,性别:男,电话:138000138000,地址:北京
        public static void modify(){
            
            try {
                //创建SAXReader解析器
                SAXReader reader=new SAXReader();
                //创建Document
                Document doc=reader.read("xml/students.xml");
                //找到根节点
                Element root=doc.getRootElement();
                //子节点集合
                List<Element> studentList=root.elements();
                //遍历查找
                for (Element ele : studentList) {
                    
                    if(ele.attributeValue("id").equals("10013")){
                        ele.element("name").setText("王小五");
                        ele.element("age").setText("30");
                        ele.element("sex").setText("男");
                        ele.element("phone").setText("138000138000");
                        ele.element("address").setText("北京");
                        
                    }
                }
                    //写入XML
                    //设置字符格式和编码
                    OutputFormat format=new OutputFormat();
                    format.setEncoding("utf-8");
                    XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
                    //将Document写入
                    writer.write(doc);
                    //关闭流
                    writer.close();
                    //给出提示
                    System.out.println("====修改成功====");
                    
                
                
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    五、删除节点XML

    /删除节点 删除王小五的节点
        public static void delete(){
            
            try {
                //创建SAXReader 解析器
                SAXReader reader=new SAXReader();
                //创建Document对象
                Document doc=reader.read("xml/students.xml");
                //获取根节点
                Element root=doc.getRootElement();
                //集合
                List<Element> stuList=root.elements();
                //遍历
                for (Element ele : stuList) {
                    if(ele.attributeValue("id").equals("10013")){
                        //获取父节点,并删除这个节点
                        ele.getParent().remove(ele);
                    }
                }
                //写入XML
                //设置字符编码格式
                OutputFormat format =new OutputFormat();
                format.setEncoding("utf-8");
                //输出流
                XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);
                writer.write(doc);
                writer.close();
                System.out.println("===删除成功===");
                
                
                
                
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    二维数组求和
    mysql 常用函数
    3月17日 45道T-SQL查找 习题
    查询语句
    T-SQL 增删改查操作
    <转jerrylsxu> HTML语法大全
    1月25日 作业 多线程
    1月22日- 链表和哈希算法
    1月22日作业
    1月21日
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4396599.html
Copyright © 2011-2022 走看看