java基礎73 dom4j修改xml里面的內容(網頁知識)


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

歡迎轉載,轉載務必說明出處。(如果本文對您有幫助,可以點擊一下右下角的 推薦,或評論,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM