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