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