2.3 使用 dom4j 对 xml文件进行 dom 解析
// 使用dom4j对XML文档进行解析 CRUD
public class Demo1 { //读取XML文档中第二本书的书名 <书名>javaWEB</书名>
@Test
public void read() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml"); //拿到第二本书这个标签
Element secondBook = (Element) document.getRootElement().elements("书").get(1); //拿到书名
String bookName = secondBook.element("书名").getText(); //element 不带s 默认取第一个节点
// String bookName = secondBook.elementText("书名"); 也可以这样写 //拿到属性值
String value = secondBook.element("书名").attributeValue("name"); System.out.println(bookName + value);
} //在第一本书添加标签 <售价>49.00元</售价>
@Test
public void add() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml"); //拿到第一本书
Element book = document.getRootElement().element("书"); //添加标签
book.addElement("售价").setText("49.00元"); //更新XML文档
//为了避免乱码问题 设置格式化输出器
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8"); //注意 如果用字节流 如:FileOutputStream,则只能依靠write去查码表 就可以设置输出的码表
//如果 用的是字符流 如:FileWriter 则调用write方法写document时 不会去查码表,而是这个字符流自己去查码表 默认查的是 gb2312
//所以 一般采用字节流,然后指定输出的码表
XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format);
write.write(document);
write.close(); }
//在第一本书 指定位置上 添加标签<售价>49.00元</售价>
@Test
public void add2() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml"); Element book = document.getRootElement().element("书"); //dom4j在指定位置插入一个标签 要在List集合中完成 ,把指定的需添加的标签放到List集合中的指定位置,后面的标签 会自动往后排
List list = book.elements();
Element newElemenrt = DocumentHelper.createElement("售价");
newElemenrt.setText("49.00元");
list.add(1,newElemenrt); OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format);
write.write(document);
write.close();
} //删除上面添加的售价节点(删除第一个出现的售价节点)
@Test
public void delete() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml"); Element element = document.getRootElement().element("书").element("售价");
element.getParent().remove(element); OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format);
write.write(document);
write.close();
} //更新第二本书的作者
@Test
public void update() throws Exception { SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml"); Element book2 = (Element) document.getRootElement().elements("书").get(1);
book2.element("作者").setText("徐泽昆"); OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),format);
write.write(document);
write.close();
}
}
2.3 使用 dom4j 对 xml文件进行 dom 解析的更多相关文章
- xml文件使用DOM解析,报异常org.xml.sax.SAXParseException,"characterEncoding" 的引用必须以 ';' 分隔符结尾异常
这个异常一般为xml文件对&的报错,只需要将&改为转义后的&即可解决
- 【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题
首先 关于dom4j的API,有如下: 当然 其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: <project xmlns="ht ...
- 使用dom4j对xml文件进行增删改查
1.使用dom4j技术对dom_demo.xml进行增删改查 首选要下载dom4j的jar包 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/ ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- 使用dom4j 读取XML文件
第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...
- DOM4J读取XML文件
最近在做DRP的项目,其中涉及到了读取配置文件,用到了DOM4J,由于是刚开始接触这种读取xml文件的技术,好奇心是难免的,于是在网上又找了一些资料,这里就结合找到的资料来谈一下读取xml文件的4中方 ...
- 【DRP】採用dom4j完毕XML文件导入数据库
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lantingxv_jing/article/details/37762523 xml文件在如 ...
- DOM4J操作XML(包括封装和解析)
DOM4J操作XML(包括封装和解析) 先来看看dom4j中相应XML的DOM树建立的继承关系 针对于XML标准定义.相应于图2-1列出的内容,dom4j提供了下面实现: 以下给出一个详细事例: pa ...
- 对xml文件的sax解析(增删改查)之一
crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...
随机推荐
- 19 Flutter仿京东商城项目 商品详情 底部浮动导航布局 商品页面布局
效果: widget/JdButton.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper.da ...
- Java NIO学习笔记四 NIO选择器
Java NIO选择器 A Selector是一个Java NIO组件,可以检查一个或多个NIO通道,并确定哪些通道已准备就绪,例如读取或写入.这样一个线程可以管理多个通道,从而管理多个网络连接. 为 ...
- 20190615 NACE关于采购订单的输出类型
项目已经做好的配置,我们复盘一下 一.使用NACE 进入输出控制条件: EF 采购订单,首先看->输出类型 标准是使用 nast 作为记录表 1输出类型, 2过程, 3 存取顺序,4 条件记录: ...
- Python的数据类型与数据结构
Python的数据类型与数据结构 数据类型分为: 整数型 :数字的整数 浮点型: 数字带小数 字符串: 用 ‘’ 或者 “” 引用的任意文本 布尔型:只有 True 和 False 数据结构分为: 列 ...
- python之selenium玩转鼠标操作(ActionChains)
前提: 一般人用selenium自动化时,会用到模拟鼠标操作的情况,像单击,双击,右击,左击啊等,这个时候我们就要用到ActionChains了. 内容: 1.ActionChains用法整理 cli ...
- Docker跨主机网络实践
Docker使用中网络管理是最麻烦的,在项目初始化前期就需要进行合理的规划,如果在比较理想的单主机的网络通信是比较简单的,但如果涉及到跨主机的网络就需要使用docker自带的overlay netwo ...
- pytest.mark.parametrize()参数化应用二,读取json文件
class TestEnorll(): def get_data(self): """ 读取json文件 :return: """ data ...
- C#开发者必须知道的13件事情
1.开发流程 程序的Bug与瑕疵往往出现于开发流程当中.只要对工具善加利用,就有助于在你发布程序之前便将问题发现,或避开这些问题. 标准化代码书写 标准化代码书写可以使代码更加易于维护,尤其是在代码由 ...
- .NET的垃圾回收机制
.NET的垃圾回收机制: CLR管理内存的区域主要有三块: 一: 线程的堆栈 ,用于分配值类型实例.堆栈主要有操作系统管理,不受垃圾收集器的控制,当值类型实例所在的方法结束时,其存储单位自动释放.栈的 ...
- POJ 3660 Cow Contest【floyd】
题目链接: http://poj.org/problem?id=3660 题目大意: 给出n头牛,m个关系,关系为a的战力比b高.求最后可以确定排名的牛的数量 思路: 1.如果一头牛跟其他所有牛都确定 ...