Java 操作xml文件--dom4j解析

一、dom4j解析

    当我们使用Java自带的dom解析时,过程繁琐,操作性局限,由此产生更灵活的java xml框架dom4j。

        1)下载dom4j

                使用dom4j需要先去下载jar包,官方网址https://dom4j.github.io/   访问网站过慢可以使用UU加速器,免费加速学术资源网站。
    

        2)配置jar包

                下载完成后,在自己的项目中新建一个文件夹directory,名为lib,将jar包粘贴到lib中,右击后选择Add as librarys
    

        3)获取Document类对象

                1.SAXReader saxReader = new SAXReader();
                2.Document document = saxReader.read("收藏信息.xml");//xml路径
        

         4)获取Writer类对象


                1.第一种漂亮的格式


                    // 将document从内存中写入xml文件
                    // 获取OutputFormat类对象 格式化 让xml文件变好看
                    OutputFormat outputFormat = OutputFormat.createPrettyPrint();
                    // 获取FileWriter类对象 需要操作的文件路径 此处是相对路径
                    FileWriter fileWriter = new FileWriter("收藏信息.xml");
                    / 创建XMLWriter类对象 将fileWriter指向的文件 格式化
                    XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);
                    // 将内存中的document写入xml文件
                    xmlWriter.write(document);
                    // 关闭资源  很重要 否则写不进xml文件
                    xmlWriter.close();
                2.默认格式
                    // 获取FileWriter类对象,指向xml文件
                    FileWriter fileWriter = new FileWriter("收藏信息.xml");
                    // 将自己写入xml文件
                    document.write(fileWriter);
                    // 关闭流 很重要  否则写不进去
                    fileWriter.close(); 

二、增删改查操作 

        (1)增:

package com.practise02;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.FileWriter;
import java.io.IOException;


public class AddXml {
    public static void main(String[] args) throws DocumentException, IOException {
        /*
         * 使用 dom4j 对xml文件进行增加元素
         *
            
                
                    
                    
                    
                
                
                    
                    
                    
                
             
         * */

        // 获取document对象
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("收藏信息.xml");

        // 获取根元素 PhoneInfo
        Element rootElement = document.getRootElement();

        // 向根元素中添加子元素Brand
        Element brandElement = rootElement.addElement("Brand");

        // 设置Brand元素属性及值
        brandElement.addAttribute("name", "OPPO");

        // 向元素Brand中添加子元素Type
        Element typeElement = brandElement.addElement("Type");

        // 设置Type的属性及值
        typeElement.addAttribute("name", "Findx6");

//        // 将document从内存中写入xml文件
//        // 获取OutputFormat类对象 格式化 让xml文件变好看
//        OutputFormat outputFormat = OutputFormat.createPrettyPrint();
//        // 获取FileWriter类对象 需要操作的文件路径 此处是相对路径
//        FileWriter fileWriter = new FileWriter("收藏信息.xml");
//        // 创建XMLWriter类对象 将fileWriter指向的文件 格式化
//        XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);
//        // 将内存中的document写入xml文件
//        xmlWriter.write(document);
//        // 关闭资源  很重要 否则写不进xml文件
//        xmlWriter.close();

        /*
        * 也可以不使用漂亮的格式化写入xml,这样会更简单
        * */
        FileWriter fileWriter = new FileWriter("收藏信息.xml");
        document.write(fileWriter);
        fileWriter.close();

    }
}

        xml文件:



    
        
        
        
    
    
        
        
        
    

    
        
    

        (2)删除:

package com.practise02;

import com.dom4j.Dom4jUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.xml.sax.SAXException;

import java.util.Iterator;

public class RemoveXml {
    public static void main(String[] args) throws DocumentException, SAXException {
        /*
        * 删除xml指定的元素
        * 将获取document和写入xml的代码封装便于使用
        * 
         
           
              
              
             
            
           
              
              
             
           
        
        * */
        
        // 使用自己写的工具类  获取document
        Document document = Dom4jUtils.getDocument("收藏信息.xml");
        
        // 获取根元素
        Element rootElement = document.getRootElement();

        // 将元素存入Iterator
        Iterator elementIterator = rootElement.elementIterator();
        // 遍历 找到要删除的元素  如 Brand为OPPO
        while(elementIterator.hasNext()){
            Element element = elementIterator.next();
            if (element.attributeValue("name").equals("OPPO"))
                rootElement.remove(element);
        }

        // 调用写好的工具类 将内存中的document写入xml问及那
        Dom4jUtils.writeDocument(document,"收藏信息.xml");

    }
}

        xml文件:



 
   
      
      
     
    
   
      
      
     
   

        (3)改:

package com.practise02;

import com.dom4j.Dom4jUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.xml.sax.SAXException;

import java.util.Iterator;

public class SetXml {
    public static void main(String[] args) throws DocumentException, SAXException {
        /*
        * 修改xml文件
        * 
        
          
            
            
            
          
          
            
            
            
          
        
        */

        // 获取document
        Document document = Dom4jUtils.getDocument("收藏信息.xml");

        // 获取就根元素
        Element rootElement = document.getRootElement();

        // 获取元素集合
        Iterator elementIterator = rootElement.elementIterator();

        // 遍历  找到要修改的元素 XiaoMi 改 小米
        while(elementIterator.hasNext()){
            Element element = elementIterator.next();
            // 判断
            if (element.attributeValue("name").equals("XiaoMi"))
                element.setAttributeValue("name","小米");
        }

        // 将document写入xml文件
        Dom4jUtils.writeDocument(document,"收藏信息.xml");


    }
}

        xml文件:



 
   
      
      
     
    
   
      
      
     
   

        (4)查 

package com.practise02;

import com.dom4j.Dom4jUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.xml.sax.SAXException;

import java.util.Iterator;

public class SearchXml {
    public static void main(String[] args) throws DocumentException, SAXException {
        /* 对xml文件进行遍历
        * 
        
          
            
            
            
          
          
            
            
            
          
        
        *
        * */

        // 获取document对象
        Document document = Dom4jUtils.getDocument("收藏信息.xml");

        // 获取根元素
        Element rootElement = document.getRootElement();

        // 获取Brand元素集合
        Iterator brandElementIterator = rootElement.elementIterator();

        // 遍历
        while(brandElementIterator.hasNext()){
            // 取出Brand元素
            Element element = brandElementIterator.next();
            // 打印Brand元素
            System.out.println(element.attributeValue("name"));
            // 获取Type元素集合
            Iterator typeElementIterator = element.elementIterator();
            // 遍历
            while(typeElementIterator.hasNext()){
                // 取出Type元素
                Element typeElement = typeElementIterator.next();
                // 打印Type元素
                System.out.println("\t" + typeElement.attributeValue("name"));
            }
        }


    }
}

       控制台:

Java 操作xml文件--dom4j解析_第1张图片

 

你可能感兴趣的:(java,servlet,前端)