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 ...
随机推荐
- c++ STL find search
#include <iostream>#include <algorithm>#include <deque>#include <list>#inclu ...
- Cinder LVM Oversubscription in thin provisioning
目录 文章目录 目录 Oversubscription in thin provisioning Oversubscription in thin provisioning Cinder spec: ...
- 灵活配置tomcat根目录网站
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDepl ...
- 动手生成 Delphi xe DBTreeview 三级行政图树 省市县
表结构及记录 object tarea: TFDQuery Connection = FDConnection1 SQL.Strings = ( 'select *' ...
- 使用super函数----增量重写普通方法和构造方法
使用super函数----增量重写普通方法和构造方法 在子类中如果重写了超类的方法,通常需要在子类方法中调用超类的同名方法,也就是说,重写超类的方法,实际上应该是一种增量的重写方式,子类方法会在超类的 ...
- 继承System.Web.UI.Page的页面基类
服务器端的page类 所有我们编写的页面都继承自page类,可见page类是非常重要的,page类提供了哪些功能,直接决定了我们的页面类可以继承什么功能,或者说,直接决定了我们的页面类功能的 ...
- 使用mybatis的resultMap进行复杂查询
记录下mybatis的集合查询中碰到的问题 https://jaychang.iteye.com/blog/2357143 MyBatis ofType和javaType区别 https: ...
- Flutter 的异步机制Future
Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到卡顿,于是通常用异步处理来解决这个问题. Dart ...
- [BAT] SetX 永久设置环境变量
SetX 有三种使用方式: 语法 1: SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M] 语法 2: SETX [/ ...
- jvm的内存结构和gc的回收
推荐这篇文章,说的还比较完整,留个记号,以后方便查看 https://blog.csdn.net/m0_38110132/article/details/74542143