• dom4j增删改查简析


    1.获取document对象
        1.1 创建saxreader对象
        SAXReader sr = new SAXReader();
        1.2通过该对象解析xml文件,返回document对象
        Document document = sr.read(filename);
    注意:整个过程都只能使用dom4j提供的全套API
    2.回写:当我们对XML文件进行了修改或者删除等操作时都要进行回写才能将改变反馈到xml文件中
        2.1因为我们在回写的时候要对文件进行格式化,所以先创建格式化对象
        OutputFormat format = OutputFormat.createPrettyPrint();
        //设定对应的码表
        format.setEncoding("utf-8");
        2.2创建写出工具,传入一个字节输出流对象个和前面的格式化对象
        XMLWriter writer = new XMLWriter(new FileOutputStream(fileUrl), format);
        2.3将制定对象写出
        writer.write(document);
        2.4关流
        writer.close();
    3.查找    
        3.1通过document对象获取都根元素对象
        Element root = document.getRootElement();
        3.2获取到根元素下的所有子元素的一个集合
        这里以子元素book为例
        List<Element> books = root.elements("book");
        3.3通过遍历获取到每一个元素
        for (Element book : books) {
            System.out.println(book);
        }
        3.4获取元素的属性值
        String attributeValue = book.attributeValue("category");
        3.5获取元素下子元素的文本值
        String text = book.elementText("author");
    4.增加元素
        4.1通过DocumentHelper创建新的子元素
        Element title = DocumentHelper.createElement("title");
        4.2给新创建的元素添加属性值
        title.addAttribute("lang", "en");
        4.3给新创建的元素添加文本值
        title.setText("Learning XML");
        4.4确定要将该新创建的元素添加在那个元素下面,获取到该元素
        //1.得到根元素
        Element root = document.getRootElement();

        // 2.获取root的最后一个book元素
        Element book = (Element) root.elements("book").get(2);
        4.5将新创建的元素添加到该元素的下面
        //传入添加位置的索引值和要添加的元素
        book.elements().add(0, title);
        4.6回写,这里我们将回写操作抽取成了一个方法
        Dom4JUtils.documentToXml(document, "WebRoot/bookstore.xml");
    5.修改操作
        5.1 修改属性 属性不存在,执行添加,属性存在,执行修改
        book.addAttribute("category", "java");
        5.2 修改文本
        book.element("title").setText("编程思想");
        5.3回写
     6.删除操作
        6.1删除book元素  需要通过父元素来删除子元素
        root.elements().remove(2);
        6.2回写

  • 相关阅读:
    php7.1安装
    nginx 的限制连接模块limit_zone与limit_req_zone
    selinux导致docker启动失败
    docker学习笔记
    kvm虚拟机
    ZooKeeper在线迁移
    启动EMQ(emqtt)时报错找不到libsctp.so.1
    Linux Samba服务主配文件smb.conf中文详解
    python-day7-字符串类型的内置方法
    python-day7-数字类型的内置方法
  • 原文地址:https://www.cnblogs.com/xusong/p/5797012.html
Copyright © 2020-2023  润新知