Dom4j工具,是非官方的,不在jdk中。

使用步骤:

1)导入dom4j的核心包。 dom4j-1.6.1.jar

2)编写Dom4j读取xml文件的代码

1、更新XML

1.1、写出内容到xml文档

  1. package com.rk.xml.g_dom4j_write;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import org.dom4j.Document;
  5. import org.dom4j.io.SAXReader;
  6. import org.dom4j.io.XMLWriter;
  7. /**
  8. * 第一个写出内容到xml文档
  9. * @author RK
  10. *
  11. */
  12. public class Demo01
  13. {
  14. public static void main(String[] args) throws Exception
  15. {
  16. //一、读取或创建一个Document对象
  17. Document doc = new SAXReader().read(new File("./src/animals.xml"));
  18. //二、修改Document对象内容
  19. //三、把修改后的Document对象写出到xml文档中
  20. //指定文件输出的位置
  21. FileOutputStream outStream = new FileOutputStream("D:/rk/result.xml");
  22. //1.创建写出对象
  23. XMLWriter writer = new XMLWriter(outStream);
  24. //2.写出Document对象
  25. writer.write(doc);
  26. //3.关闭流
  27. writer.close();
  28. System.out.println("执行结束!");
  29. }
  30. }

1.2、写出内容到xml文档的细节

  1. package com.rk.xml.g_dom4j_write;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import org.dom4j.Document;
  5. import org.dom4j.io.OutputFormat;
  6. import org.dom4j.io.SAXReader;
  7. import org.dom4j.io.XMLWriter;
  8. /**
  9. * 讨论写出内容到xml文档的细节
  10. * @author RK
  11. *
  12. */
  13. public class Demo02
  14. {
  15. public static void main(String[] args) throws Exception
  16. {
  17. Document doc = new SAXReader().read(new File("./src/animals2.xml"));
  18. /**
  19. * 1.指定写出的格式
  20. */
  21. //      OutputFormat format = OutputFormat.createCompactFormat();//紧凑的格式.去除空格换行.项目上线的时候
  22. OutputFormat format = OutputFormat.createPrettyPrint();//漂亮的格式.有空格和换行.开发调试的时候
  23. /**
  24. * 2.指定生成的xml文档的编码
  25. *    同时影响了xml文档保存时的编码  和  xml文档声明的encoding的编码(xml解析时的编码)
  26. *    结论: 使用该方法生成的xml文档避免中文乱码问题。
  27. */
  28. format.setEncoding("UTF-8");
  29. //指定文件输出的位置
  30. FileOutputStream outStream = new FileOutputStream("D:/rk/result.xml");
  31. //1.创建写出对象
  32. XMLWriter writer = new XMLWriter(outStream, format);
  33. //2.写出Document对象
  34. writer.write(doc);
  35. //3.关闭流
  36. writer.close();
  37. System.out.println("执行结束!");
  38. }
  39. }

1.3、修改xml内容:添加、修改、删除

  1. package com.rk.xml.g_dom4j_write;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import org.dom4j.Document;
  5. import org.dom4j.DocumentHelper;
  6. import org.dom4j.Node;
  7. import org.dom4j.Element;
  8. import org.dom4j.Attribute;
  9. import org.dom4j.Text;
  10. import org.dom4j.io.SAXReader;
  11. import org.dom4j.io.XMLWriter;
  12. import org.dom4j.io.OutputFormat;
  13. import org.junit.Test;
  14. /**
  15. * 修改xml内容
  16. * 增加:文档,标签 ,属性
  17. * 修改:属性值,文本
  18. * 删除:标签,属性
  19. *
  20. *
  21. */
  22. public class Demo03
  23. {
  24. /**
  25. * 增加:文档,标签 ,属性
  26. */
  27. @Test
  28. public void testAdd() throws Exception
  29. {
  30. //1.创建文档
  31. Document doc = DocumentHelper.createDocument();
  32. //2.增加标签
  33. Element rootElement = doc.addElement("ContactList");
  34. Element contactElement = rootElement.addElement("Contact");
  35. Element nameElement = contactElement.addElement("Name");
  36. nameElement.setText("小明");
  37. //3.增加属性
  38. contactElement.addAttribute("id", "c001");
  39. contactElement.addAttribute("region", "北京");
  40. //把修改后的Document对象写出到xml文档中
  41. FileOutputStream out = new FileOutputStream("D:/rk/contact.xml");
  42. OutputFormat format = OutputFormat.createPrettyPrint();
  43. format.setEncoding("utf-8");
  44. XMLWriter writer = new XMLWriter(out,format);
  45. writer.write(doc);
  46. writer.close();
  47. System.out.println("执行结束!");
  48. }
  49. /**
  50. * 修改:属性值,文本
  51. */
  52. @Test
  53. public void testModify() throws Exception
  54. {
  55. Document doc = new SAXReader().read(new File("./src/animals.xml"));
  56. /**
  57. * 方案一: 修改属性值   1.得到标签对象 2.得到属性对象 3.修改属性值
  58. */
  59. //1.1  得到标签对象
  60. Element catElement = doc.getRootElement().element("Cat");
  61. //1.2 得到属性对象
  62. Attribute catAttr = catElement.attribute("id");
  63. //1.3 修改属性值
  64. catAttr.setValue("c100");
  65. /**
  66. * 方案二: 修改属性值
  67. */
  68. //2.1  得到标签对象
  69. Element dogElement = doc.getRootElement().element("Dog");
  70. //2.2 通过增加同名属性的方法,修改属性值
  71. dogElement.addAttribute("id", "d100");
  72. /**
  73. * 修改文本 1.得到标签对象 2.修改文本
  74. */
  75. Element nameElement = doc.getRootElement().element("Cat").element("Home");
  76. nameElement.setText("第六宇宙");
  77. FileOutputStream out = new FileOutputStream("D:/rk/Animals.xml");
  78. OutputFormat format = OutputFormat.createPrettyPrint();
  79. format.setEncoding("utf-8");
  80. XMLWriter writer = new XMLWriter(out,format);
  81. writer.write(doc);
  82. writer.close();
  83. System.out.println("执行结束!");
  84. }
  85. /**
  86. * 删除:标签,属性
  87. */
  88. @Test
  89. public void testDelete() throws Exception
  90. {
  91. Document doc = new SAXReader().read(new File("./src/animals.xml"));
  92. /**
  93. * 1.删除标签     1.1 得到标签对象  1.2 删除标签对象
  94. */
  95. // 1.1 得到标签对象
  96. Element nameElement = doc.getRootElement().element("Cat").element("Home");
  97. //1.2 删除标签对象
  98. nameElement.detach();
  99. //      nameElement.getParent().remove(nameElement);
  100. /**
  101. * 2.删除属性   2.1得到属性对象  2.2 删除属性
  102. */
  103. Element catElement = doc.getRootElement().element("Cat");
  104. //2.1得到属性对象
  105. Attribute idAttr = catElement.attribute("id");
  106. //2.2 删除属性
  107. idAttr.detach();
  108. //      idAttr.getParent().remove(idAttr);
  109. FileOutputStream out = new FileOutputStream("D:/rk/animals.xml");
  110. OutputFormat format = OutputFormat.createPrettyPrint();
  111. format.setEncoding("utf-8");
  112. XMLWriter writer = new XMLWriter(out,format);
  113. writer.write(doc);
  114. writer.close();
  115. System.out.println("执行结束!");
  116. }
  117. }

2、思维导图

XML解析-Dom4j的DOM解析方式更新XML的更多相关文章

  1. 2.1 使用JAXP 对 xml文档进行DOM解析

    //使用 jaxp 对xml文档进行dom解析 public class Demo2 { //必要步骤 @Test public void test() throws Exception { //1. ...

  2. 使用JAXP对xml文档进行DOM解析基础

    XML解析方式分为两种:dom和sax         dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式.       sax: ...

  3. xml解析-jaxp之dom解析

    package day06_parser.dom; /** * xml的解析技术:JAXP是Java API for XML Processing的英文字头缩写, * 中文含义是:用于XML文档处理的 ...

  4. 解析XML文件之使用DOM解析器

    在前面的文章中.介绍了使用SAX解析器对XML文件进行解析.SAX解析器的长处就是占用内存小.这篇文章主要介绍使用DOM解析器对XML文件进行解析. DOM解析器的长处可能是理解起来比較的直观,当然, ...

  5. Android笔记(四十五) Android中的数据存储——XML(一)DOM解析器

    DOM解析XML在j2ee开发中比较常见,在Dom解析的过程中,是先把dom全部文件读入到内存中,然后使用dom的api遍历所有数据,检索想要的数据,这种方式显然是一种比较消耗内存的方式,对于像手机这 ...

  6. 使用JAXP对XML文档进行DOM解析

    import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers. ...

  7. javaweb学习总结十一(JAXP对XML文档进行DOM解析)

    一:将内存中写好的xml文件读取到硬盘上 二:DOM方式对xml文件进行增删改查 1:添加节点(默认是在最后的子节点后面添加) @Test // 向元素中添加节点<version>1.0& ...

  8. [ java 工具类] xml字符串解析成Map(DOM解析)

    package com.tencent.jungle.wechat.util; import com.google.inject.Singleton; import org.w3c.dom.Docum ...

  9. java dom xml解析和windows dom解析的差别

    1.java dom 子节点包括空节点. 2.java dom 文档节点值也是其的子节点. 而windows dom(mshtml.dll)子节点不包括空节点,而节点值也不是以子节点的方式来对待的.

随机推荐

  1. 类中的普通方法伪装成属性 @property

    class P: def __init__(self,name,age): self.name=name if type(age) is int: self.__age=age else: print ...

  2. 【01】bootstrap基本信息

    [01]基本信息   中文官网:http://www.bootcss.com/ 英文官网:https://github.com/twbs/bootstrap/   支持IE8+   CND : htt ...

  3. Leetcode 79.单词搜索

    单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单 ...

  4. [luoguP1316] 丢瓶盖(二分答案)

    传送门 二分答案再判断即可 ——代码 #include <cstdio> #include <iostream> #include <algorithm> #def ...

  5. 文化之旅 2012年NOIP全国联赛普及组

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超 ...

  6. codevs1004 四子连棋

    题目描述 Description 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻的空格,这叫行棋一步,黑白双 ...

  7. [转] MySQL "replace into" 的坑 (5.5 ROW格式)

    MySQL 对 SQL 有很多扩展,有些用起来很方便,但有一些被误用之后会有性能问题,还会有一些意料之外的副作用,比如 REPLACE INTO. 比如有这样一张表: 1 2 3 4 5 6 7 8 ...

  8. SQL Server memory – Internals

    https://blogs.msdn.microsoft.com/karthick_pk/2013/03/16/sql-server-memory-internals/

  9. 安装 openCV 2.4.10

    近期试验了一下 ubuntu 12.06 (x86) 安装.openCV 安装脚本 最好的文章是 https://help.ubuntu.com/community/OpenCV. 它提供一个脚本( ...

  10. 性能测试实战-XYB项目-内网访问

    使用内网服务器,linux host绑定域名,相当于ip地址+域名的host绑定,只不过这里的ip是yc-sparks.schoolis.cn