创建Document文档对象  

DocumentHelper.createDocument();

写出内容到xml文档

XMLWriter writer = new XMLWriter(OuputStream, OutputFormat);
writer.write(Document);
修改xml文档的API
增加:
DocumentHelper.createDocument();//增加文档
addElement("标签名");//增加标签
addAttribute("属性名", “属性值”);//增加属性
addText("文本内容");//增加文本
修改:
Attribute.setValue("属性值"); //修改属性值
Element.addAttribute("同名的属性名", "属性值");//通过增加同名属性的方法,覆盖修改属性值
Element.setText("文本内容");//修改文本内容
删除:
Element.detach();//删除标签。自杀
父标签.remove("子标签");//删除标签。他杀
Atrribute.detach();//删除属性。自杀
    当前标签.remove("属性");//删除标签。remove
Demo:
  1. package com.dom4j.write;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import org.dom4j.Attribute;
  5. import org.dom4j.Document;
  6. import org.dom4j.DocumentException;
  7. import org.dom4j.DocumentHelper;
  8. import org.dom4j.Element;
  9. import org.dom4j.io.OutputFormat;
  10. import org.dom4j.io.SAXReader;
  11. import org.dom4j.io.XMLWriter;
  12. import org.junit.After;
  13. import org.junit.Before;
  14. import org.junit.BeforeClass;
  15. import org.junit.Test;
  16. /**
  17. * 写出内容到xml文档
  18. * @author zhiyong
  19. *
  20. */
  21. public class Demo1 {
  22. public static Document document;
  23. /**
  24. * 首先加载或者创建一个Document对象
  25. * @throws DocumentException
  26. */
  27. @Before
  28. public void beforeTest() throws Exception{
  29. /*
  30. * 1.读取或者创建一个Document对象
  31. */
  32. //读取"/src/contact2.xml"文件
  33. SAXReader reader = new SAXReader();
  34. //获取Document对象
  35. document = reader.read(new File("./src/contact2.xml"));
  36. /**
  37. *DocumentHelper.createDocument();创建Document文档对象
  38. */
  39. // document = DocumentHelper.createDocument();
  40. }
  41. /*
  42. *2. 修改Document对象内容
  43. * 增加:标签、属性
  44. * 修改:属性值、文本
  45. * 删除:标签、属性
  46. */
  47. /**
  48. * 增加:标签、属性
  49. * @throws Exception
  50. */
  51. @Test
  52. public void testAdd() throws Exception {
  53. /*
  54. * 增加:标签
  55. */
  56. Element root = document.addElement("contactList");//一个xml文档只能存在一个根标签
  57. Element ele1 = root.addElement("contact");
  58. /*
  59. * 添加属性:
  60. */
  61. ele1.addAttribute("id", "001");
  62. ele1.addAttribute("name", "contactName");
  63. Element child01 = ele1.addElement("name");
  64. /*
  65. * 添加文本
  66. */
  67. child01.addText("木丁西");
  68. Element child02 = ele1.addElement("age");
  69. child02.addText("18");
  70. Element child03 = ele1.addElement("email");
  71. child03.addText("1012421396@qq.com");
  72. Element child04 = ele1.addElement("qq");
  73. child04.addText("1012421396");
  74. Element ele2 = root.addElement("contact");
  75. ele2.addAttribute("id", "002");
  76. Element child11 = ele2.addElement("name");
  77. child11.addText("刘先森");
  78. Element child12 = ele2.addElement("age");
  79. child12.addText("22");
  80. Element child13 = ele2.addElement("email");
  81. child13.addText("541247820@qq.com");
  82. Element child14 = ele2.addElement("qq");
  83. child14.addText("101242134");
  84. }
  85. /**
  86. * 修改:属性值、文本
  87. * @throws Exception
  88. */
  89. @Test
  90. public void testUpdate() throws Exception {
  91. /*
  92. * 修改属性值
  93. *方案1:1.得到标签对象 2.得到属性对象 3.修改属性值 【推荐】
  94. */
  95. //获取标签对象
  96. Element contactEle = document.getRootElement().element("contact");
  97. //得到属性对象
  98. Attribute idAttr = contactEle.attribute("id");
  99. //修改属性值
  100. idAttr.setValue("003");
  101. /*
  102. * 方案2:修改属性值:1.得到标签对象 2.直接修改【不推荐使用】
  103. */
  104. contactEle.setAttributeValue("id", "004");
  105. /*
  106. * 方法3:修改属性值:1.得到标签对象 2.通过增加同名属性的方法,覆盖修改属性值
  107. */
  108. contactEle.addAttribute("id", "005");
  109. /*
  110. * 修改文本
  111. *方案1:1.得到标签对象 2..修改文本
  112. */
  113. Element nameEle = document.getRootElement().element("contact").element("name");
  114. nameEle.setText("曾用名");
  115. }
  116. /**
  117. * 删除:标签、属性
  118. * @throws Exception
  119. */
  120. @Test
  121. public void testDelete() throws Exception {
  122. /*
  123. * 删除标签方式1:1.获取标签对象 2.删除(自杀)
  124. */
  125. /* //获取标签对象
  126. Element emailEle = document.getRootElement().element("contact").element("email");
  127. //删除标签。自杀
  128. emailEle.detach();*/
  129. /*
  130. * 删除标签方式2:1.获取标签对象的父标签 2.删除子标签
  131. */
  132. //拿到第2个contact标签对象,再获取“name”标签
  133. Element nameEle = document.getRootElement().elementByID("002").element("name");
  134. Element nameParent = nameEle.getParent();
  135. nameParent.remove(nameEle);
  136. /*
  137. * 删除属性方式1:1.找到属性标签对象 2.删除属性
  138. */
  139. //拿到第2个contact标签对象
  140. Element contactEle2 = (Element)document.getRootElement().elements("contact").get(1);
  141. Attribute idAttr = contactEle2.attribute("id");//获取id属性对象
  142. idAttr.detach();//自杀
  143. /*
  144. * 删除属性方式2:1.找到属性标签对象 2.remove删除对象
  145. */
  146. contactEle2.remove(idAttr);
  147. }
  148. /**
  149. * 3.最后把修改后的Document对象写出到xml文档中
  150. */
  151. @After
  152. public void testAfter() throws Exception {
  153. //指定文件输出的位置
  154. FileOutputStream out = new FileOutputStream("./src/contact4.xml");
  155. /*
  156. * 指定写出的格式
  157. */
  158. // OutputFormat format = OutputFormat.createCompactFormat();//紧凑的格式,去除了空格和换行。占用容量小。项目上线的时候用
  159. OutputFormat format = OutputFormat.createPrettyPrint();//漂亮格式,包含空格和换行。占用容量大。开发调试的时候用
  160. /*
  161. * 指定生成文档的编码格式
  162. * 同时影响了xml文档保存时的编码和xml文档声明的encoding的编码(xml解析时的编码)
  163. * 结论:使用该方法生成的XML文档可以避免中文乱码问题
  164. */
  165. format.setEncoding("utf-8");
  166. //创建写出对象
  167. // XMLWriter writer = new XMLWriter(out);
  168. XMLWriter writer = new XMLWriter(out, format);
  169. writer.write(document);
  170. //关闭资源原则:先开后关,后开后关
  171. writer.close();
  172. out.close();
  173. }
  174. }
效果:    

Dom4j修改xml文件相关推荐

  1. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  2. dom4j读写xml文件

    dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator ...

  3. java项目——Dom4j读取XML文件保存orecal数据库

    上一篇介绍了如何利用dom4j读取xml文件,连接数据库,换数据库的话直接修改XML文件,使配置更加灵 活,本篇博客主要介绍一下如何将XML文件导入到orecal数据库中. XML在现在的项目中的应用 ...

  4. java jdom dom4j_Java基础系列17:使用DOM、SAX、JDOM、DOM4J解析XML文件详解

    一 简介 在Java中,可以使用多种方式来解析XML文件,其中最常见的可能就是DOM.SAX.JDOM.DOM4J这四种方式了.其中,DOM和SAX这两种解析XML文件的方式有jdk自带的API,因此 ...

  5. DOM4j读取XML文件(SAXReader)

    为什么80%的码农都做不了架构师?>>>    DOM4j读取XML文件(SAXReader) 一.一个很好的SAXReader读写xml文件的例题: 总结: Document do ...

  6. 使用dom4j解析XML文件

    为什么80%的码农都做不了架构师?>>>    dom4j是一个java 的XML API,用来读写XML文件. 使用dom4j解析XML文件,首先需要在官网下载dom4j-1.6. ...

  7. Java 操纵XML之修改XML文件

    Java 操纵XML之修改XML文件 一.JAVA DOM PARSER DOM interfaces The DOM defines several Java interfaces. Here ar ...

  8. python处理xml文件_Python解析并修改XML文件

    XML 本质上只是一种数据格式,它的本意并不是管理数据,因此,在 XML 应用中,数据的管理仍然要借助数据库,尤其是当数据量很大.性能要求很高的时候. XML数据库具有以下优势: XML数据库能够对半 ...

  9. dom4j读取XML文件内容

    转载自  dom4j读取XML文件内容 <?xml version="1.0" encoding="UTF-8"?> <RESULT> ...

最新文章

  1. GitHub/GitLab/Gitee中项目互拷贝后仍保留历史提交记录的方法
  2. WDS Services Can't Start
  3. SMO算法(比较好的讲解)
  4. DWZ与百度编辑器的IE8以下上传图片兼容问题
  5. c盘users的用户名怎么改_怎么修改iPhone备份文件夹路径 iPhone C盘路径修改教程【详解】...
  6. android 信号强度变化,Android监听WIFI网络的变化并且获得当前信号强度
  7. jenkins 集成java搅拌_如何将Gauge与Jenkins集成
  8. 《spring-boot学习》-12-@controller和@RestController的区别?
  9. Qt加载RGB内存数据,并显示彩色图
  10. vista iis7上安装php4.4.7
  11. 云承软件和云溪哪个好_诺承木工开料机使用什么软件好
  12. 密码学基础之对称密钥的分发和存储
  13. 2019年2月10日训练日记
  14. 检查mysql被挂马_对付数据库被挂马有绝招
  15. python通过串口发送bin文件
  16. 以“空城计”为例的项目管理执行方法论干货
  17. Vue基础学习笔记Day05_生命周期_axios
  18. 上班时间如何偷偷刷抖音不被发现?教你一招搞定
  19. NPOI 连续插入多张图片的办法,及部分样式的代码
  20. jQuery制作手风琴

热门文章

  1. 醉汉漫步 Drunkard's walk
  2. 安装erlang没有bin文件夹_Erlang安装简介
  3. kafka server broker参数配置
  4. DelayedOperationPurgatory机制(七):DelayedFetch实现
  5. 打牌博弈 dfs深度优先遍历搜索 排课表 拓扑排序 升序字符串 动态规划 剑指offer编程题整理 leetcode每日算法题
  6. 英语四级万能写作模板
  7. dell服务器卡在启动界面_Dell PowerEdge 服务器启动指南
  8. L1-059 敲笨钟 (20 分) java语言
  9. Hive SQL数据查询基础
  10. 公务员计算机类面试真题及答案,2019国家公务员考试面试真题及答案——现象类题...