java基础73 dom4j修改xml里面的内容(网页知识)

故事扮演 提交于 2020-03-24 06:36:50

1、DOM4J对XML文件进行增删改操作

实现代码

  1 package com.shore.code;
  2 
  3 import java.io.File;
  4 import java.io.FileOutputStream;
  5 import java.io.IOException;
  6 
  7 import org.dom4j.Attribute;
  8 import org.dom4j.Document;
  9 import org.dom4j.DocumentHelper;
 10 import org.dom4j.Element;
 11 import org.dom4j.io.OutputFormat;
 12 import org.dom4j.io.SAXReader;
 13 import org.dom4j.io.XMLWriter;
 14 import org.junit.Test;
 15 
 16 /**
 17  * @author DSHORE / 2018-9-3
 18  *
 19  */
 20 /*
 21  * 修改xml内容
 22  * 增加:文档,标签,属性
 23  * 修改:属性值,文本
 24  * 删除:标签,属性
 25  * */
 26 public class Demo3 {
 27     /*
 28      * 增加:文档,标签,属性
 29      * */
 30     @Test
 31     public void test1() throws IOException{
 32         /*
 33          *创建文档
 34          * */
 35         Document doc=DocumentHelper.createDocument();
 36         Element rootelem=doc.addElement("contactList");
 37         Element contactElem=rootelem.addElement("contact");
 38         Element nameEle = contactElem.addElement("name");
 39         nameEle.addEntity("name", "张三");//添加实体内容
 40         Element ageEle = contactElem.addElement("age");
 41         ageEle.addComment("张三");//添加注释
 42         /*
 43          * 增加属性
 44          * */
 45         contactElem.addAttribute("id","001");
 46         contactElem.addAttribute("name","zhangsan");
 47         //1.创建输出流通道
 48         FileOutputStream out=new FileOutputStream("F:/contact.xml");
 49         //设置写入contact.xml文件的内容/标签格式(俗称:美观格式)
 50         OutputFormat format=OutputFormat.createPrettyPrint();
 51         //设置编码格式
 52         format.setEncoding("utf-8");
 53         //2.创建写出的对象,把修改后的Document对象写出到xml中
 54         XMLWriter write=new XMLWriter(out,format);
 55         //3.写出对象
 56         write.write(doc);
 57         //4.关闭资源
 58         write.close();
 59     }
 60     /*
 61      * 修改:属性值,文本
 62      * */
 63     @Test
 64     public void test2() throws Exception{
 65         //1.创建并读取一个Document对象
 66         Document doc=new SAXReader().read(new File("./src/contact.xml"));
 67         /*
 68          * 方案一:修改属性值     1.得到标签对象   2.得到属性对象    3.修改属性值   
 69          * */
 70         //2.得到标签对象
 71         Element contatcElem=doc.getRootElement().element("contact");
 72         //3.得到属性对象
 73         Attribute idAttr=contatcElem.attribute("id");
 74         //4.修改属性值
 75         idAttr.setValue("005");
 76         /*
 77          * 方案二:修改属性值
 78          * */
 79         //2.得到标签对象
 80         Element contatcElem2=doc.getRootElement().element("contact");
 81         //3.通过增加同名的属性的方法,修改属性值
 82         contatcElem2.addAttribute("id","006");
 83         /*
 84          * 修改文本:   1.得到标签    2.修改文本
 85          * */
 86         Element nameElement=doc.getRootElement().element("contact").element("name");
 87         nameElement.setText("王五");
 88         //1.创建输出流通道
 89         FileOutputStream out=new FileOutputStream("F:/contact.xml");
 90         OutputFormat format=OutputFormat.createPrettyPrint();//设置contact.xml文件格式(俗称:美观格式)
 91         format.setEncoding("utf-8");//设置编码格式
 92         //2.创建写出的对象
 93         XMLWriter write=new XMLWriter(out,format);
 94         //3.写出对象
 95         write.write(doc);
 96         //4.关闭资源
 97         write.close();
 98     }
 99     /*
100      * 删除:标签,属性
101      * */
102     @Test
103     public void test3() throws Exception{
104         Document doc=new SAXReader().read(new File("./src/contact.xml"));
105         /*
106          * 删除标签:  1.得到标签      2.删除标签对象
107          * */
108         //得到标签
109         Element ageElement=doc.getRootElement().element("contact").element("age");
110         //删除标签对象
111         //ageElement.detach();
112         ageElement.getParent().remove(ageElement);//和上面的效果是一样的
113         /*
114          * 2.删除属性   1.得到属性对象    2.删除属性
115          * */
116         //得到属性对象
117         //得到第二个contact标签
118         Element contactElement=(Element)doc.getRootElement().elements().get(1);//get()里面填0代表第一个contact标签,填1代表第二contact标签。相当于数组的下标
119         //得到属性对象
120         Attribute idAttribute=contactElement.attribute("id");
121         //删除属性
122         idAttribute.detach();
123         //idAttribute.getParent().remove(idAttribute);//和上面的效果是一样的
124         FileOutputStream out=new FileOutputStream("F:/contact.xml");
125         OutputFormat format=OutputFormat.createPrettyPrint();
126         format.setEncoding("utf-8");
127         XMLWriter write=new XMLWriter(out,format);
128         write.write(doc);
129         write.close();
130     }
131 }

源文档(contact.xml)

 

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <contactList>
 3     <contact id="001" sex="男">
 4         <name>张三</name>
 5         <age>18</age>
 6         <phone>15779593710</phone>
 7         <email>872855221@qq.com</email>
 8         <qq>872855221</qq>
 9         <abc>
10             <a>  </a>
11         </abc>
12     </contact>
13     <contact id="038">
14         <name>李四</name>
15         <age>20</age>
16         <phone>1314580</phone>
17         <email>12580@qq.com</email>
18         <qq>832144529</qq>
19     </contact>
20 </contactList>

效果图

     

 

         

 

 

 

 

 

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/9561848.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

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