7.使用dom4j实现增删改查
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.)
//获取解析器
SAXReader saxReader = new SAXReader();
//获取文档
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文件
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
OutputFormat.createPrettyPrint() : 表示格式化(就是有缩进的格式)
3.实例如下
xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <persion>
<p ID="AAA">
<name>李四</name>
<age>88</age>
</p>
<p>
<name>张三</name>
<age>55</age>
</p>
</persion>
//需求1:获取xml中所有的name元素的值
package Day3; import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Demo1 {
public static void main(String[] args) throws Exception {
//创建解析器
SAXReader saxReader = new SAXReader();
//得到document
Document document = saxReader.read("src/Day3/text.xml");
//获取根节点
Element element = document.getRootElement();
//获取所有p元素
List<Element> list = element.elements("p");
//遍历p元素
for (Element p : list) {
//获取每个p元素中的name元素
Element name = p.element("name");
//获取name元素的值
String str = name.getText();
//输出
System.out.println(str);
}
}
}

//需求2:查询第一个p元素中的name元素的值
package Day3; import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Demo2 {
public static void main(String[] args) throws Exception {
//获取解析器(org.dom4j.io.SAXReader)
SAXReader saxReader = new SAXReader();
//获取文档(org.dom4j.Document)
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素(org.dom4j.Element)
Element element = document.getRootElement();
//获取所有的p元素(List集合 java.util.List)
List<Element> list = element.elements("p");
//获取第一个p元素
Element p1 = list.get(0);
//获取第一个name元素
Element name1 = p1.element("name");
//输出第一个name元素的值
System.out.println(name1.getText());
}
}

//需求3:在第一个p元素里面添加一个元素<sex>女</sex>
package Day3; import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo3 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取第一个p元素
Element p1 = element.element("p");
//在p1里面添加一个标签(<sex>女</sex>)
Element sex = p1.addElement("sex");
//在新添加的标签里面写入文字
sex.setText("女");
//更新xml文件
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"), format);
xmlWriter.write(document);
xmlWriter.close();
}
}
//需求4:在指定地方添加元素<school>家里蹲大学</school>
package Day3; import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo4 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取第一个p元素
Element p = element.element("p");
//获取p元素中的所有元素
List<Element> list = p.elements();
//创建需要添加的元素
Element addElement = DocumentHelper.createElement("school");
//在创建的元素中写入文字
addElement.setText("家里蹲大学");
//把创建的元素添加到集合指定的地方
list.add(1, addElement);
//更新xml文件
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
xmlWriter.write(document);
xmlWriter.close(); }
}
//需求5:修改第一个p元素中的age元素的值
package Day3; import java.io.FileOutputStream; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo5 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取第一个p元素
Element p = element.element("p");
//获取第一个p元素的age元素
Element age = p.element("age");
//修改第一个p元素的age元素的值为30
age.setText("30");
//更新xml
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
}
}
//需求6:删除第二个p元素的name元素
package Day3; import java.io.FileOutputStream;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Demo6 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取所有p元素
List<Element> list = element.elements("p");
//获取第二个p元素
Element p2 = list.get(1);
//获取第二个p元素的name元素
Element name = p2.element("name");
//通过父元素删除子元素(要被删除的元素)
p2.remove(name);
//更新xml文件
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/Day3/text.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
}
}
//需求7:获取第一个p元素的ID值
package Day3; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Demo7 {
public static void main(String[] args) throws Exception {
//获取解析器
SAXReader saxReader = new SAXReader();
//获取document
Document document = saxReader.read("src/Day3/text.xml");
//获取根元素
Element element = document.getRootElement();
//获取第一个p元素
Element p = element.element("p");
//获取第一个p元素的ID值
String strid = p.attributeValue("ID");
//输出
System.out.println(strid);
}
}
7.使用dom4j实现增删改查的更多相关文章
- 使用dom4j对xml文件进行增删改查
1.使用dom4j技术对dom_demo.xml进行增删改查 首选要下载dom4j的jar包 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/ ...
- 用dom4j解析xml文件并执行增删改查操作
转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...
- XML(五)dom4j增删改查
book2.xml <? xml version="1.0" encoding="UTF-8"?> <书架> <书> < ...
- 使用DOM进行xml文档的crud(增删改查)操作<操作详解>
很多朋友对DOM有感冒,这里我花了一些时间写了一个小小的教程,这个能看懂,会操作了,我相信基于DOM的其它API(如JDOM,DOM4J等)一般不会有什么问题. 后附java代码,也可以下载(可点击这 ...
- XML为数据库进行增删改查(实例)
//增删改查文件 package xml2; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.Fi ...
- java实现xml文件增删改查
java一次删除xml多个节点: 方案1.你直接改动了nodeList,这一般在做循环时是不同意直接这么做的. 你能够尝试在遍历一个list时,在循环体同一时候删除list里的内容,你会得到一个异常. ...
- sssp-springmvc+spring+spring-data-jpa增删改查
环境:IDE:eclipse.jdk1.7.mysql5.7.maven 项目结构图 上面目录结构你可以自己创建 搭建框架 首先加入maven依赖包以及相关插件 <dependencies> ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- 使用idea对XML的增删改查
XML:是一种可扩展标记性的语言,与java语言无关,它可以自定义标签. 1.首先需要到导入Dom4j架包,与自己所时候的ide关联 2.编写自己的xml文件,入上图所示(里面的所有元素及元素中的属性 ...
随机推荐
- 关闭本机的代理服务(Proxy)
若您使用了代理服务(Proxy),可能会导致战网游戏发生网络连接.安装或更新方面的问题.请参考以下步骤来关闭您电脑的网络代理服务. Windows 按下 Windows 按鍵 + R . 在运行框中, ...
- 新建 SecondFragment 实现类
package com.test.mvp.mvpdemo.mvp.v6.view; import android.os.Bundle;import android.support.annotation ...
- 使用 localstorage 写入浏览器并获取
写入:以字符串的形式写入 localStorage.setItem('data', JSON.stringify(arr)); 获取: 注意:一定要使JSON.parse转为对象才能取出来,不然是空的 ...
- windown 使用python 自动切换网络
由于工作环境的特殊性,有时需要切换到内网工作,有时需要通过手机连接外网,想自动运行一个脚本就做完这事 首先在PC机上安装一个无线网卡,例如360wifi就可以. 除了python,还用到了DOS命令, ...
- leetcode 118. 杨辉三角(python)
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5输出:[ [1], [1,1], [1,2,1], [1, ...
- mysql_DML_索引、视图
创建索引的语法格式:– 创建普通索引:• create index 索引名称 on 表名(列)• alter table 表名 add index 索引名称 (列)– 创建唯一索引:• create ...
- mybatis缓存机制(转)
缓存在互联网系统中是非常重要的, 其主要作用是将数据保存到内存中, 当用户查询数据 时, 优先从缓存容器中获取数据,而不是频繁地从数据库中查询数据,从而提高查询性能.目 前流行的缓存服务器有Mongo ...
- EXE的32位或64位判断
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC> dumpbin /headers "Program.exe" ...
- 简单入门爬斗鱼颜值区妹子照片 v1.1
这是个比较简单的入门爬虫.基于python3. urllib,urllib2,python3中用urllib.request代替,使用方法基本一致. #python3 import urllib.re ...
- 20190816 On Java8 第六章 初始化和清理
第六章 初始化和清理 利用构造器保证初始化 在 Java 中,类的设计者通过构造器保证每个对象的初始化. 构造器名称与类名相同. 在 Java 中,对象的创建与初始化是统一的概念,二者不可分割. 方法 ...