• 7.使用dom4j实现增删改查


    1.导入dim4j提供的jar包

      (1)dom4j,是一个组织,针对xml解析,提供解析器dom4j

      (2)dom4j不是javase的一部分(jaxp是的)

      (3)使用dom4j步骤

        - 下载并导入dom4j提供的jar包

        - 创建一个lib文件夹,并把jar包放到里面

        - 右键点击jar包, build path --> add to buildpath

        - 看到jar包变成一个奶瓶养殖,表示导入成功

      (4)下载地址  https://dom4j.github.io/  下载后缀名为 .zip的文件 它里面提供了许多帮助文档

      (5)查看快速开发

        - 解压后 dom4j-1.6.1-->docs-->打开index.html-->点击左上角的 Quick start  我们可以看到很多实例

      (6)在线api文档地址 https://www.oschina.net/uploads/doc/dom4j-1.6.1/index.html

    2.解析xml

      (1)获取document(SAXReader creates a DOM4J tree from SAX parsing events.)

    //获取解析器
    SAXReader saxReader = new SAXReader();
    //获取文档
    Document document = saxReader.read("xml文件路径");

      (2)document的父接口是Node

        - Node中的一些方法

            getName()       获取元素名
            getParent()      获取元素的父元素
            getText()       获取元素的值
            setText(String text) 修改元素的值(这个会覆盖原来的值)

        - document接口的一些方法

            getRootElement()  获取xml的根元素,返回Element

      (3)Element父接口Node

        - Element中的一些方法

            addAttribute(String name, String value)   给元素添加属性

            addText(String text)   在元素原有的值上追加文字

            attributeValue(String name) 获取元素的属性值

            attributeIterator()    返回一个Iterator迭代器

      (4)如果我们对xml进行了增删改,那么我们需要更新xml文件

    OutputFormat format = OutputFormat.createPrettyPrint();
    XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
    xmlWriter.write(document);
    xmlWriter.close();

     OutputFormat.createPrettyPrint()  : 表示格式化(就是有缩进的格式)

    3.实例如下

    xml文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <persion> 
      <p ID="AAA"> 
        <name>李四</name>  
        <age>88</age>
      </p>  
      <p> 
        <name>张三</name>  
        <age>55</age> 
      </p> 
    </persion>

    //需求1:获取xml中所有的name元素的值

    package Day3;
    
    import java.util.List;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class Demo1 {
        public static void main(String[] args) throws Exception {
            //创建解析器
            SAXReader saxReader = new SAXReader();
            //得到document
            Document document = saxReader.read("src/Day3/text.xml");
            //获取根节点
            Element element =  document.getRootElement();
            //获取所有p元素
            List<Element> list = element.elements("p");
            //遍历p元素
            for (Element p : list) {
                //获取每个p元素中的name元素
                Element name = p.element("name");
                //获取name元素的值
                String str = name.getText();
                //输出
                System.out.println(str);
            }
        }
    }

    //需求2:查询第一个p元素中的name元素的值

    package Day3;
    
    import java.util.List;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class Demo2 {
        public static void main(String[] args) throws Exception {
            //获取解析器(org.dom4j.io.SAXReader)
            SAXReader saxReader = new SAXReader();
            //获取文档(org.dom4j.Document)
            Document document = saxReader.read("src/Day3/text.xml");
            //获取根元素(org.dom4j.Element)
            Element element = document.getRootElement();
            //获取所有的p元素(List集合  java.util.List)
            List<Element> list = element.elements("p");
            //获取第一个p元素
            Element p1 = list.get(0);
            //获取第一个name元素
            Element name1 = p1.element("name");
            //输出第一个name元素的值
            System.out.println(name1.getText());
        }
    }

    //需求3:在第一个p元素里面添加一个元素<sex>女</sex>

    package Day3;
    
    import java.io.FileOutputStream;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class Demo3 {
        public static void main(String[] args) throws Exception {
            //获取解析器
            SAXReader saxReader = new SAXReader();
            //获取document
            Document document = saxReader.read("src/Day3/text.xml");
            //获取根元素
            Element element = document.getRootElement();
            //获取第一个p元素
            Element p1 = element.element("p");
            //在p1里面添加一个标签(<sex>女</sex>)
            Element sex = p1.addElement("sex");
            //在新添加的标签里面写入文字
            sex.setText("女");
            //更新xml文件
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"), format);
            xmlWriter.write(document);
            xmlWriter.close();
        }
    }

    //需求4:在指定地方添加元素<school>家里蹲大学</school>

    package Day3;
    
    import java.io.FileOutputStream;
    import java.util.List;
    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;
    
    public class Demo4 {
        public static void main(String[] args) throws Exception {
            //获取解析器
            SAXReader saxReader = new SAXReader();
            //获取document
            Document document = saxReader.read("src/Day3/text.xml");
            //获取根元素
            Element element = document.getRootElement();
            //获取第一个p元素
            Element p = element.element("p");
            //获取p元素中的所有元素
            List<Element> list = p.elements();
            //创建需要添加的元素
            Element addElement = DocumentHelper.createElement("school");
            //在创建的元素中写入文字
            addElement.setText("家里蹲大学");
            //把创建的元素添加到集合指定的地方
            list.add(1, addElement);
            //更新xml文件
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
            xmlWriter.write(document);
            xmlWriter.close();
            
        }
    }

    //需求5:修改第一个p元素中的age元素的值

    package Day3;
    
    import java.io.FileOutputStream;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class Demo5 {
        public static void main(String[] args) throws Exception {
            //获取解析器
            SAXReader saxReader = new SAXReader();
            //获取document
            Document document = saxReader.read("src/Day3/text.xml");
            //获取根元素
            Element element = document.getRootElement();
            //获取第一个p元素
            Element p = element.element("p");
            //获取第一个p元素的age元素
            Element age = p.element("age");
            //修改第一个p元素的age元素的值为30
            age.setText("30");
            //更新xml
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
            xmlWriter.write(document);
            xmlWriter.close();
        }
    }

    //需求6:删除第二个p元素的name元素

    package Day3;
    
    import java.io.FileOutputStream;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class Demo6 {
        public static void main(String[] args) throws Exception {
            //获取解析器
            SAXReader saxReader = new SAXReader();
            //获取document
            Document document = saxReader.read("src/Day3/text.xml");
            //获取根元素
            Element element = document.getRootElement(); 
            //获取所有p元素
            List<Element> list = element.elements("p");
            //获取第二个p元素
            Element p2 = list.get(1);
            //获取第二个p元素的name元素
            Element name = p2.element("name");
            //通过父元素删除子元素(要被删除的元素)
            p2.remove(name);
            //更新xml文件
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
            xmlWriter.write(document);
            xmlWriter.close();
        }
    }

    //需求7:获取第一个p元素的ID值

    package Day3;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class Demo7 {
        public static void main(String[] args) throws Exception {
            //获取解析器
            SAXReader saxReader = new SAXReader();
            //获取document
            Document document = saxReader.read("src/Day3/text.xml");
            //获取根元素
            Element element = document.getRootElement(); 
            //获取第一个p元素
            Element p = element.element("p");
            //获取第一个p元素的ID值
            String strid = p.attributeValue("ID");
            //输出
            System.out.println(strid);
        }
    }
  • 相关阅读:
    底图与蒙版的过渡效果transition
    消除blur属性的边框
    jquery ajax实例教程和一些高级用法
    常用js正则表达式大全
    HTML5 + JS 调取摄像头拍照下载
    JS运动框架
    JS 实现AJAX封装(只限于异步)
    事件委托详解
    JS 实现随机验证码功能
    利用JS调取电脑摄像头,实现拍照功能
  • 原文地址:https://www.cnblogs.com/zjdbk/p/9175275.html
Copyright © 2020-2023  润新知