导航

Java解析XML之Dom4j

Posted on 2017-02-08 17:00  mylydg  阅读(316)  评论(0编辑  收藏  举报

  Java解析XML文件的方法有多种,个人感觉最常用的是使用Dom4j来解析XML文件。下面就简单介绍下Dom4j的基础使用。

  Dom4j需要jar包的支持,大家可以从网络上下载,如dom4j-1.6.1.jar

  下载好JAR包以后,只要导入我们的工程就可以使用了,Java WEB工程导入路径为:WebRoot/WEB-INF/lib目录下;

  代码示例:

一、查看xml文档基础操作(以封装方法展示):

    public static  void run() throws Exception {
        //获取Dom4j解析器对象
        SAXReader reader = new SAXReader();
        //读取XML,返回Document对象
        Document document = reader.read("src/Demo.xml");
        //获取根节点
        Element rootElement = document.getRootElement();
        //获取根节点下的全部名称为book的元素,得到元素集合
        List<Element> elements = rootElement.elements("book");
        //选择某一个元素
        Element shu2 = elements.get(1); 
        //获取元素下的摸个目标元素
        Element name2 = shu2.element("name");
        //获取元素的文本内容 getText()
        System.out.print("书名是:"+name2.getText());
    }

二、插入一个xml元素并回写到xml文件的操作

    public static  void run2() throws Exception {
        //获取Dom4j解析器对象
        SAXReader reader = new SAXReader();
        //读取XML,返回Document对象
        Document document = reader.read("src/Demo.xml");
        //获取根节点
        Element rootElement = document.getRootElement();
        //获取目标节点元素
        Element shu1 = (Element) rootElement.elements("book").get(1);
        //添加元素(addElement)和文本(addText);添加属性(addAttribute)
        shu1.addElement("prise").addText("99.8 yuan").addAttribute("属性名", "属性值");
        //设置输出格式,使用OutputFormat,多采用createPrettyPrint();如果需要压缩格式,用createCompactFormat()
        OutputFormat format = OutputFormat.createPrettyPrint();
        //设置输出编码
        format.setEncoding("utf-8");
        //创建回写类,并指定xml路径与写入格式
         XMLWriter writer = new XMLWriter(new FileOutputStream("src/Demo.xml"),format);
         //回写
         writer.write(document);
         //成功
         System.out.print("ok,mylydg");
    }

 三、在指定位置插入元素的操作

    public static  void run3() throws Exception {
            //获取Dom4j解析器对象
            SAXReader reader = new SAXReader();
            //读取XML,返回Document对象
            Document document = reader.read("src/Demo.xml");
            //获取根节点
            Element rootElement = document.getRootElement();
            //获取目标节点元素
            Element book = (Element) rootElement.elements("shu").get(1);
            //通过DocumentHelper创建一个元素
            Element prise = DocumentHelper.createElement("prise");
            //设置元素文本
            prise.setText("99.8 yuan");
            //获得目标元素的子元素集合
            List<Element> elements = book.elements();
            //通过下标添加元素到指定集合位置
            elements.add(0, prise);
            //设置输出格式,使用OutputFormat,多采用createPrettyPrint();如果需要压缩格式,用createCompactFormat()
            OutputFormat format = OutputFormat.createPrettyPrint();
            //创建回写类,并指定xml路径与写入格式
             XMLWriter writer = new XMLWriter(new FileOutputStream("src/Demo.xml"),format);
             //回写
             writer.write(document);
             //关闭流
             writer.close();
             //成功
             System.out.print("ok,mylydg");
    }

四、删除和更新的操作

    public static  void run4() throws Exception {
        //获取Dom4j解析器对象
        SAXReader reader = new SAXReader();
        //读取XML,返回Document对象
        Document document = reader.read("src/Demo.xml");
        //获取根节点
        Element rootElement = document.getRootElement();
        //获取目标节点元素
        Element book = (Element) rootElement.elements("shu").get(1);
        //获取要删除的元素
        Element prise = book.element("prise");
        //删除
        book.remove(prise);
        //获取要更新的元素
        Element name = book.element("name");
        //更新
        name.setText("new name");
        //设置输出格式,使用OutputFormat,多采用createPrettyPrint();如果需要压缩格式,用createCompactFormat()
        OutputFormat format = OutputFormat.createPrettyPrint();
        //创建回写类,并指定xml路径与写入格式
         XMLWriter writer = new XMLWriter(new FileOutputStream("src/Demo.xml"),format);
         //回写
         writer.write(document);
         //关闭流
         writer.close();
         //成功
         System.out.print("ok,mylydg");
    }

  以上就是Dom4j对xml解析的基本使用方法。