• XML解析-Dom4j的DOM解析方式更新XML


    Dom4j工具,是非官方的,不在jdk中。

    使用步骤:

    1)导入dom4j的核心包。 dom4j-1.6.1.jar

    2)编写Dom4j读取xml文件的代码

    1、更新XML

    1.1、写出内容到xml文档

    [java] view plain copy
     
    1. package com.rk.xml.g_dom4j_write;  
    2.    
    3. import java.io.File;  
    4. import java.io.FileOutputStream;  
    5.    
    6. import org.dom4j.Document;  
    7. import org.dom4j.io.SAXReader;  
    8. import org.dom4j.io.XMLWriter;  
    9.    
    10. /** 
    11.  * 第一个写出内容到xml文档 
    12.  * @author RK 
    13.  * 
    14.  */  
    15. public class Demo01  
    16. {  
    17.     public static void main(String[] args) throws Exception  
    18.     {  
    19.         //一、读取或创建一个Document对象  
    20.         Document doc = new SAXReader().read(new File("./src/animals.xml"));  
    21.            
    22.         //二、修改Document对象内容  
    23.            
    24.         //三、把修改后的Document对象写出到xml文档中  
    25.         //指定文件输出的位置  
    26.         FileOutputStream outStream = new FileOutputStream("D:/rk/result.xml");  
    27.         //1.创建写出对象  
    28.         XMLWriter writer = new XMLWriter(outStream);  
    29.         //2.写出Document对象  
    30.         writer.write(doc);  
    31.         //3.关闭流  
    32.         writer.close();  
    33.         System.out.println("执行结束!");  
    34.     }  
    35. }  


    1.2、写出内容到xml文档的细节

    [java] view plain copy
     
    1. package com.rk.xml.g_dom4j_write;  
    2.    
    3. import java.io.File;  
    4. import java.io.FileOutputStream;  
    5. import org.dom4j.Document;  
    6. import org.dom4j.io.OutputFormat;  
    7. import org.dom4j.io.SAXReader;  
    8. import org.dom4j.io.XMLWriter;  
    9.    
    10. /** 
    11.  * 讨论写出内容到xml文档的细节 
    12.  * @author RK 
    13.  * 
    14.  */  
    15. public class Demo02  
    16. {  
    17.     public static void main(String[] args) throws Exception  
    18.     {  
    19.         Document doc = new SAXReader().read(new File("./src/animals2.xml"));  
    20.            
    21.         /** 
    22.          * 1.指定写出的格式 
    23.          */  
    24. //      OutputFormat format = OutputFormat.createCompactFormat();//紧凑的格式.去除空格换行.项目上线的时候  
    25.         OutputFormat format = OutputFormat.createPrettyPrint();//漂亮的格式.有空格和换行.开发调试的时候  
    26.         /** 
    27.          * 2.指定生成的xml文档的编码 
    28.          *    同时影响了xml文档保存时的编码  和  xml文档声明的encoding的编码(xml解析时的编码) 
    29.          *    结论: 使用该方法生成的xml文档避免中文乱码问题。 
    30.          */  
    31.         format.setEncoding("UTF-8");  
    32.            
    33.         //指定文件输出的位置  
    34.         FileOutputStream outStream = new FileOutputStream("D:/rk/result.xml");  
    35.         //1.创建写出对象  
    36.         XMLWriter writer = new XMLWriter(outStream, format);  
    37.         //2.写出Document对象  
    38.         writer.write(doc);  
    39.         //3.关闭流  
    40.         writer.close();  
    41.         System.out.println("执行结束!");  
    42.     }  
    43. }  


    1.3、修改xml内容:添加、修改、删除

    [java] view plain copy
     
    1. package com.rk.xml.g_dom4j_write;  
    2.    
    3. import java.io.File;  
    4. import java.io.FileOutputStream;  
    5.    
    6. import org.dom4j.Document;  
    7. import org.dom4j.DocumentHelper;  
    8. import org.dom4j.Node;  
    9. import org.dom4j.Element;  
    10. import org.dom4j.Attribute;  
    11. import org.dom4j.Text;  
    12. import org.dom4j.io.SAXReader;  
    13. import org.dom4j.io.XMLWriter;  
    14. import org.dom4j.io.OutputFormat;  
    15. import org.junit.Test;  
    16.    
    17. /** 
    18.  * 修改xml内容 
    19.  * 增加:文档,标签 ,属性 
    20.  * 修改:属性值,文本 
    21.  * 删除:标签,属性 
    22.  * 
    23.  * 
    24.  */  
    25. public class Demo03  
    26. {  
    27.     /** 
    28.      * 增加:文档,标签 ,属性 
    29.      */  
    30.     @Test  
    31.     public void testAdd() throws Exception  
    32.     {  
    33.         //1.创建文档  
    34.         Document doc = DocumentHelper.createDocument();  
    35.            
    36.         //2.增加标签  
    37.         Element rootElement = doc.addElement("ContactList");  
    38.         Element contactElement = rootElement.addElement("Contact");  
    39.         Element nameElement = contactElement.addElement("Name");  
    40.         nameElement.setText("小明");  
    41.            
    42.         //3.增加属性  
    43.         contactElement.addAttribute("id", "c001");  
    44.         contactElement.addAttribute("region", "北京");  
    45.            
    46.         //把修改后的Document对象写出到xml文档中  
    47.         FileOutputStream out = new FileOutputStream("D:/rk/contact.xml");  
    48.         OutputFormat format = OutputFormat.createPrettyPrint();  
    49.         format.setEncoding("utf-8");  
    50.         XMLWriter writer = new XMLWriter(out,format);  
    51.         writer.write(doc);  
    52.         writer.close();  
    53.         System.out.println("执行结束!");  
    54.     }  
    55.    
    56.     /** 
    57.      * 修改:属性值,文本 
    58.      */  
    59.     @Test  
    60.     public void testModify() throws Exception  
    61.     {  
    62.         Document doc = new SAXReader().read(new File("./src/animals.xml"));  
    63.         /** 
    64.          * 方案一: 修改属性值   1.得到标签对象 2.得到属性对象 3.修改属性值 
    65.          */  
    66.         //1.1  得到标签对象  
    67.         Element catElement = doc.getRootElement().element("Cat");  
    68.         //1.2 得到属性对象  
    69.         Attribute catAttr = catElement.attribute("id");  
    70.         //1.3 修改属性值  
    71.         catAttr.setValue("c100");  
    72.            
    73.         /** 
    74.          * 方案二: 修改属性值 
    75.          */  
    76.         //2.1  得到标签对象  
    77.         Element dogElement = doc.getRootElement().element("Dog");  
    78.         //2.2 通过增加同名属性的方法,修改属性值  
    79.         dogElement.addAttribute("id", "d100");  
    80.            
    81.         /** 
    82.          * 修改文本 1.得到标签对象 2.修改文本 
    83.          */  
    84.         Element nameElement = doc.getRootElement().element("Cat").element("Home");  
    85.         nameElement.setText("第六宇宙");  
    86.            
    87.         FileOutputStream out = new FileOutputStream("D:/rk/Animals.xml");  
    88.         OutputFormat format = OutputFormat.createPrettyPrint();  
    89.         format.setEncoding("utf-8");  
    90.         XMLWriter writer = new XMLWriter(out,format);  
    91.         writer.write(doc);  
    92.         writer.close();  
    93.         System.out.println("执行结束!");  
    94.     }  
    95.    
    96.     /** 
    97.      * 删除:标签,属性 
    98.      */  
    99.     @Test  
    100.     public void testDelete() throws Exception  
    101.     {  
    102.         Document doc = new SAXReader().read(new File("./src/animals.xml"));  
    103.         /** 
    104.          * 1.删除标签     1.1 得到标签对象  1.2 删除标签对象     
    105.          */  
    106.         // 1.1 得到标签对象  
    107.         Element nameElement = doc.getRootElement().element("Cat").element("Home");  
    108.         //1.2 删除标签对象  
    109.         nameElement.detach();  
    110. //      nameElement.getParent().remove(nameElement);  
    111.            
    112.         /** 
    113.          * 2.删除属性   2.1得到属性对象  2.2 删除属性 
    114.          */  
    115.         Element catElement = doc.getRootElement().element("Cat");  
    116.         //2.1得到属性对象  
    117.         Attribute idAttr = catElement.attribute("id");  
    118.         //2.2 删除属性  
    119.         idAttr.detach();  
    120. //      idAttr.getParent().remove(idAttr);  
    121.            
    122.         FileOutputStream out = new FileOutputStream("D:/rk/animals.xml");  
    123.         OutputFormat format = OutputFormat.createPrettyPrint();  
    124.         format.setEncoding("utf-8");  
    125.         XMLWriter writer = new XMLWriter(out,format);  
    126.         writer.write(doc);  
    127.         writer.close();  
    128.         System.out.println("执行结束!");  
    129.     }  
    130. }  

    2、思维导图

    wKioL1c2J2mQaTfAAAHmv1_GZM0598.png

  • 相关阅读:
    异常处理
    泛型介绍
    Echart可视化学习(十)
    终Echart可视化学习(十二)
    Echart可视化学习(九)
    Echart可视化学习(十一)
    Ubuntu版本介绍
    大数据量分页存储过程效率测试附代码
    把 ubuntu linux 装入移动硬盘,并在不同电脑上运行
    后来才知道linux中的0、1、2、4、+、、u、g、o、a、=、r、w、x、d、、l、s、p、c、b非常重要
  • 原文地址:https://www.cnblogs.com/vilionzhan/p/8563287.html
Copyright © 2020-2023  润新知