1.导入dim4j提供的jar包

  (1)dom4j,是一个组织,针对xml解析,提供解析器dom4j

  (2)dom4j不是javase的一部分(jaxp是的)

  (3)使用dom4j步骤

    - 下载并导入dom4j提供的jar包

    - 创建一个lib文件夹,并把jar包放到里面

    - 右键点击jar包, build path --> add to buildpath

    - 看到jar包变成一个奶瓶养殖,表示导入成功

  (4)下载地址  https://dom4j.github.io/  下载后缀名为 .zip的文件 它里面提供了许多帮助文档

  (5)查看快速开发

    - 解压后 dom4j-1.6.1-->docs-->打开index.html-->点击左上角的 Quick start  我们可以看到很多实例

  (6)在线api文档地址 https://www.oschina.net/uploads/doc/dom4j-1.6.1/index.html

2.解析xml

  (1)获取document(SAXReader creates a DOM4J tree from SAX parsing events.)

  1. //获取解析器
  2. SAXReader saxReader = new SAXReader();
  3. //获取文档
  4. Document document = saxReader.read("xml文件路径");

  (2)document的父接口是Node

    - Node中的一些方法

        getName()       获取元素名
        getParent()      获取元素的父元素
        getText()       获取元素的值
        setText(String text) 修改元素的值(这个会覆盖原来的值)

    - document接口的一些方法

        getRootElement()  获取xml的根元素,返回Element

  (3)Element父接口Node

    - Element中的一些方法

        addAttribute(String name, String value)   给元素添加属性

        addText(String text)   在元素原有的值上追加文字

        attributeValue(String name) 获取元素的属性值

        attributeIterator()    返回一个Iterator迭代器

  (4)如果我们对xml进行了增删改,那么我们需要更新xml文件

  1. OutputFormat format = OutputFormat.createPrettyPrint();
  2. XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
  3. xmlWriter.write(document);
  4. xmlWriter.close();

 OutputFormat.createPrettyPrint()  : 表示格式化(就是有缩进的格式)

3.实例如下

xml文件如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <persion>
  4. <p ID="AAA">
  5. <name>李四</name>
  6. <age>88</age>
  7. </p>
  8. <p>
  9. <name>张三</name>
  10. <age>55</age>
  11. </p>
  12. </persion>

//需求1:获取xml中所有的name元素的值

  1. package Day3;
  2.  
  3. import java.util.List;
  4. import org.dom4j.Document;
  5. import org.dom4j.Element;
  6. import org.dom4j.io.SAXReader;
  7.  
  8. public class Demo1 {
  9. public static void main(String[] args) throws Exception {
  10. //创建解析器
  11. SAXReader saxReader = new SAXReader();
  12. //得到document
  13. Document document = saxReader.read("src/Day3/text.xml");
  14. //获取根节点
  15. Element element = document.getRootElement();
  16. //获取所有p元素
  17. List<Element> list = element.elements("p");
  18. //遍历p元素
  19. for (Element p : list) {
  20. //获取每个p元素中的name元素
  21. Element name = p.element("name");
  22. //获取name元素的值
  23. String str = name.getText();
  24. //输出
  25. System.out.println(str);
  26. }
  27. }
  28. }

//需求2:查询第一个p元素中的name元素的值

  1. package Day3;
  2.  
  3. import java.util.List;
  4. import org.dom4j.Document;
  5. import org.dom4j.Element;
  6. import org.dom4j.io.SAXReader;
  7.  
  8. public class Demo2 {
  9. public static void main(String[] args) throws Exception {
  10. //获取解析器(org.dom4j.io.SAXReader)
  11. SAXReader saxReader = new SAXReader();
  12. //获取文档(org.dom4j.Document)
  13. Document document = saxReader.read("src/Day3/text.xml");
  14. //获取根元素(org.dom4j.Element)
  15. Element element = document.getRootElement();
  16. //获取所有的p元素(List集合 java.util.List)
  17. List<Element> list = element.elements("p");
  18. //获取第一个p元素
  19. Element p1 = list.get(0);
  20. //获取第一个name元素
  21. Element name1 = p1.element("name");
  22. //输出第一个name元素的值
  23. System.out.println(name1.getText());
  24. }
  25. }

//需求3:在第一个p元素里面添加一个元素<sex>女</sex>

  1. package Day3;
  2.  
  3. import java.io.FileOutputStream;
  4. import org.dom4j.Document;
  5. import org.dom4j.Element;
  6. import org.dom4j.io.OutputFormat;
  7. import org.dom4j.io.SAXReader;
  8. import org.dom4j.io.XMLWriter;
  9.  
  10. public class Demo3 {
  11. public static void main(String[] args) throws Exception {
  12. //获取解析器
  13. SAXReader saxReader = new SAXReader();
  14. //获取document
  15. Document document = saxReader.read("src/Day3/text.xml");
  16. //获取根元素
  17. Element element = document.getRootElement();
  18. //获取第一个p元素
  19. Element p1 = element.element("p");
  20. //在p1里面添加一个标签(<sex>女</sex>)
  21. Element sex = p1.addElement("sex");
  22. //在新添加的标签里面写入文字
  23. sex.setText("女");
  24. //更新xml文件
  25. OutputFormat format = OutputFormat.createPrettyPrint();
  26. XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"), format);
  27. xmlWriter.write(document);
  28. xmlWriter.close();
  29. }
  30. }

//需求4:在指定地方添加元素<school>家里蹲大学</school>

  1. package Day3;
  2.  
  3. import java.io.FileOutputStream;
  4. import java.util.List;
  5. import org.dom4j.Document;
  6. import org.dom4j.DocumentHelper;
  7. import org.dom4j.Element;
  8. import org.dom4j.io.OutputFormat;
  9. import org.dom4j.io.SAXReader;
  10. import org.dom4j.io.XMLWriter;
  11.  
  12. public class Demo4 {
  13. public static void main(String[] args) throws Exception {
  14. //获取解析器
  15. SAXReader saxReader = new SAXReader();
  16. //获取document
  17. Document document = saxReader.read("src/Day3/text.xml");
  18. //获取根元素
  19. Element element = document.getRootElement();
  20. //获取第一个p元素
  21. Element p = element.element("p");
  22. //获取p元素中的所有元素
  23. List<Element> list = p.elements();
  24. //创建需要添加的元素
  25. Element addElement = DocumentHelper.createElement("school");
  26. //在创建的元素中写入文字
  27. addElement.setText("家里蹲大学");
  28. //把创建的元素添加到集合指定的地方
  29. list.add(1, addElement);
  30. //更新xml文件
  31. OutputFormat format = OutputFormat.createPrettyPrint();
  32. XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
  33. xmlWriter.write(document);
  34. xmlWriter.close();
  35.  
  36. }
  37. }

//需求5:修改第一个p元素中的age元素的值

  1. package Day3;
  2.  
  3. import java.io.FileOutputStream;
  4.  
  5. import org.dom4j.Document;
  6. import org.dom4j.Element;
  7. import org.dom4j.io.OutputFormat;
  8. import org.dom4j.io.SAXReader;
  9. import org.dom4j.io.XMLWriter;
  10.  
  11. public class Demo5 {
  12. public static void main(String[] args) throws Exception {
  13. //获取解析器
  14. SAXReader saxReader = new SAXReader();
  15. //获取document
  16. Document document = saxReader.read("src/Day3/text.xml");
  17. //获取根元素
  18. Element element = document.getRootElement();
  19. //获取第一个p元素
  20. Element p = element.element("p");
  21. //获取第一个p元素的age元素
  22. Element age = p.element("age");
  23. //修改第一个p元素的age元素的值为30
  24. age.setText("30");
  25. //更新xml
  26. OutputFormat format = OutputFormat.createPrettyPrint();
  27. XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
  28. xmlWriter.write(document);
  29. xmlWriter.close();
  30. }
  31. }

//需求6:删除第二个p元素的name元素

  1. package Day3;
  2.  
  3. import java.io.FileOutputStream;
  4. import java.util.List;
  5.  
  6. import org.dom4j.Document;
  7. import org.dom4j.Element;
  8. import org.dom4j.io.OutputFormat;
  9. import org.dom4j.io.SAXReader;
  10. import org.dom4j.io.XMLWriter;
  11.  
  12. public class Demo6 {
  13. public static void main(String[] args) throws Exception {
  14. //获取解析器
  15. SAXReader saxReader = new SAXReader();
  16. //获取document
  17. Document document = saxReader.read("src/Day3/text.xml");
  18. //获取根元素
  19. Element element = document.getRootElement();
  20. //获取所有p元素
  21. List<Element> list = element.elements("p");
  22. //获取第二个p元素
  23. Element p2 = list.get(1);
  24. //获取第二个p元素的name元素
  25. Element name = p2.element("name");
  26. //通过父元素删除子元素(要被删除的元素)
  27. p2.remove(name);
  28. //更新xml文件
  29. OutputFormat format = OutputFormat.createPrettyPrint();
  30. XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
  31. xmlWriter.write(document);
  32. xmlWriter.close();
  33. }
  34. }

//需求7:获取第一个p元素的ID值

  1. package Day3;
  2.  
  3. import org.dom4j.Document;
  4. import org.dom4j.Element;
  5. import org.dom4j.io.SAXReader;
  6.  
  7. public class Demo7 {
  8. public static void main(String[] args) throws Exception {
  9. //获取解析器
  10. SAXReader saxReader = new SAXReader();
  11. //获取document
  12. Document document = saxReader.read("src/Day3/text.xml");
  13. //获取根元素
  14. Element element = document.getRootElement();
  15. //获取第一个p元素
  16. Element p = element.element("p");
  17. //获取第一个p元素的ID值
  18. String strid = p.attributeValue("ID");
  19. //输出
  20. System.out.println(strid);
  21. }
  22. }

7.使用dom4j实现增删改查的更多相关文章

  1. 使用dom4j对xml文件进行增删改查

    1.使用dom4j技术对dom_demo.xml进行增删改查 首选要下载dom4j的jar包 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/ ...

  2. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

  3. XML(五)dom4j增删改查

    book2.xml <? xml version="1.0" encoding="UTF-8"?> <书架> <书> < ...

  4. 使用DOM进行xml文档的crud(增删改查)操作<操作详解>

    很多朋友对DOM有感冒,这里我花了一些时间写了一个小小的教程,这个能看懂,会操作了,我相信基于DOM的其它API(如JDOM,DOM4J等)一般不会有什么问题. 后附java代码,也可以下载(可点击这 ...

  5. XML为数据库进行增删改查(实例)

    //增删改查文件 package xml2; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.Fi ...

  6. java实现xml文件增删改查

    java一次删除xml多个节点: 方案1.你直接改动了nodeList,这一般在做循环时是不同意直接这么做的. 你能够尝试在遍历一个list时,在循环体同一时候删除list里的内容,你会得到一个异常. ...

  7. sssp-springmvc+spring+spring-data-jpa增删改查

    环境:IDE:eclipse.jdk1.7.mysql5.7.maven 项目结构图 上面目录结构你可以自己创建 搭建框架 首先加入maven依赖包以及相关插件 <dependencies> ...

  8. java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

    一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...

  9. 使用idea对XML的增删改查

    XML:是一种可扩展标记性的语言,与java语言无关,它可以自定义标签. 1.首先需要到导入Dom4j架包,与自己所时候的ide关联 2.编写自己的xml文件,入上图所示(里面的所有元素及元素中的属性 ...

随机推荐

  1. 学习日记14、EF 时间段查询

    m_Rep.GetList(a => System.Data.Entity.DbFunctions.DiffDays(DateTime.Now, a.EndDate) < date); 命 ...

  2. [CSP-S模拟测试]:Park(树上DP)

    题目描述 公园里有$n$个雕像,有$n-1$条道路分别连接其中两个雕像,任意两个雕像可以直接或间接相连.现在每个景点$i$聚集着$P_i$只鸽子,旅行家手里有$v$数量的面包屑. 一旦旅行家在雕像$i ...

  3. (转)使用windows server2008 创建 Hyper-V虚拟机

    转:https://jingyan.baidu.com/article/7c6fb42833ad4980652c904f.html Hyper-v是微软提供的虚拟机,利用server 2008搭建hy ...

  4. 关于C(n,m) 的奇偶 ,与C(n,0),C(n,1),C(n,2)…C(n,n).当中有多少个奇数

    (n & m) == m  为奇数 C(n,0),C(n,1),C(n,2)…C(n,n).当中有多少个奇数 第一种想法是Lucas定理推导,我们分析一下 C(n,m)%2,那么由lucas定 ...

  5. Python3.5自带venv创建虚拟环境

    为每个程序单独创建虚拟环境可以保证程序只能访问虚拟环境中的包,保持全局解释器的干净整洁,使其只作为创建(更多)虚拟环境的源. windows下创建虚拟环境 Python3.5自带venv,只需执行py ...

  6. tomcat启动控制台报Exception in thread ''main".......“Could not find the main class:.....Bootstrap”问题

    startup.bat文件打开最后end下一行加pause调试,重新启动tomcat,发现配置没问题,但是依然报错,发现是jdk版本问题,jdk1.6无法与tomcat8适配,重新装个1.7版本的jd ...

  7. FastReport使用教程

    FastReport使用心得 一.准备 1.这次开发使用的是FastReport桌面版(FastReport.Net Version 201731.16 Demo) 2.引用类库FastReport. ...

  8. 1.openshift搭建

    第1章 主机规划和所需文件 1.1 主机规划 IP地址 域名 用途 11.11.233.125 master01.song.test.cnpc 容器编排.etcd 11.11.233.126 mast ...

  9. go 结构体取代类

    我们知道go的结构体有点类的感觉,可以有自己的属性和方法. 但是由于结构体的属性都是有零值的,我们在创建结构体的时候并不需要设置这些属性的值就能创建,但是这样创建的结构体往往没有什么实用价值. 我们可 ...

  10. BFS+打印路径

    题目是给你起点sx,和终点gx:牛在起点可以进行下面两个操作: 步行:John花一分钟由任意点X移动到点X-1或点X+1. 瞬移:John花一分钟由任意点X移动到点2*X. 你要输出最短步数及打印路径 ...