//    使用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 解析的更多相关文章

  1. xml文件使用DOM解析,报异常org.xml.sax.SAXParseException,"characterEncoding" 的引用必须以 ';' 分隔符结尾异常

    这个异常一般为xml文件对&的报错,只需要将&改为转义后的&amp即可解决

  2. 【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题

    首先 关于dom4j的API,有如下: 当然  其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: <project xmlns="ht ...

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

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

  4. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  5. 使用dom4j 读取XML文件

    第一次接触dom4j的时候,感觉这个东西很神秘,因为之前虽然知道XML文件吧,但从来没有用过,一直感觉XML肯定不好操作.当得知,dom4j可以很容易的操作读取XML文件时,不免有些好奇,那么,用do ...

  6. DOM4J读取XML文件

    最近在做DRP的项目,其中涉及到了读取配置文件,用到了DOM4J,由于是刚开始接触这种读取xml文件的技术,好奇心是难免的,于是在网上又找了一些资料,这里就结合找到的资料来谈一下读取xml文件的4中方 ...

  7. 【DRP】採用dom4j完毕XML文件导入数据库

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lantingxv_jing/article/details/37762523     xml文件在如 ...

  8. DOM4J操作XML(包括封装和解析)

    DOM4J操作XML(包括封装和解析) 先来看看dom4j中相应XML的DOM树建立的继承关系 针对于XML标准定义.相应于图2-1列出的内容,dom4j提供了下面实现: 以下给出一个详细事例: pa ...

  9. 对xml文件的sax解析(增删改查)之一

    crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...

随机推荐

  1. eclipse快捷键整理

    编辑 Ctrl+1 快速修复(最经典的快捷键,就不用多说了,可以解决很多问题,比如import类.try catch包围等)Ctrl+Shift+F 格式化当前代码Ctrl+Shift+M 添加类的i ...

  2. PowerDesigner常用命令

    在Tools=>Execute Commands下的Edit/Run Scripts,或者通过Ctrl+Shift+X就可以运行脚本.如图: 1.将所有的表名和列名都修改为大写 '******* ...

  3. swift 第二课 基础知识-2

    setter 和getter 的使用--> 适合计算使用 struct Point { var x = 0.0, y=0.0 } struct Size { var width = 0.0, h ...

  4. WordPress创建多个page页面模板文件

    一般我们使用WordPress创建多个page页面模板文件,有两种方法: 一种是,创建page-$id.php文件 这样的文件是通过WordPress默认的链接查询来创建page页面模板文件,就是使用 ...

  5. Unity动态批处理和静态批处理学习

    本文转自:http://blog.csdn.net/lyh916/article/details/45725499,请点击链接查看楼主大神原文,尊重楼主版权. 参考链接:Unity圣典:http:// ...

  6. Java学习笔记-设计模式

    常见设计模式有23种,设计模式是解决某一类问题最行之有效的方法 单例设计模式 解决一个类在内存中只存在一个对象 思想 为了避免其他程序过多建立该类对象.先禁止其他程序建立该类对象 还为了让其他程序可以 ...

  7. GxDlms编译

    目录 GxDlms编译 title: GxDlms编译 date: 2019/12/5 13:36:37 toc: true --- GxDlms编译 C++版本如果要编译动态库,项目>属性需要 ...

  8. 关于Angular+ngx-perfect-scrollbar自定义各大浏览器滚动条样式的解决方法

    资料: http://manos.malihu.gr/jquery-custom-content-scroller/  (此项是结合Jquery使用的,在此并未采用) https://www.npmj ...

  9. Centos6.5下安装jumpserver-1.4.1报错AttributeError: module 'gssapi' has no attribute 'GSSException'

    报错: >>> import paramiko Traceback (most recent call last): File "<stdin>", ...

  10. [转帖]linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具

    linux下CPU.内存.IO.网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具 https://blog.51cto.com/hao360/1587165 linux_python关 ...