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

别等时光非礼了梦想. 提交于 2020-03-24 19:05:04

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!