Dom4j向XML中指定位置添加、删除、修改节点——(五)
需求:
在第一本书作者后面增加描述 <描述>好书</描述>
思路:获取书下面下的所有节点(一个list集合),在list集合指定位置添加一个元素(list.add(index,object)),最后写入原xml文档。
原来XML文档
<?xml version="1.0" encoding="utf-8"?> <书架>
<书>
<书名>Java高级</书名>
<作者>武陟县</作者>
<价格>200元</价格>
</书>
<书>
<书名 name="xxxxxxxxxxx">Java中级</书名>
<作者>打火机</作者>
<价格>2000元</价格>
</书>
</书架>
-------------------------------------------------------指定位置添加节点-------------------------------------
Java代码:
// 在指定位置添加一个节点
@Test
public void test2() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement(); // 获取第一个书节点
Element shu = (Element) root.elements("书").get(0);
// 获取第一个节点下的所有节点
List list = shu.elements(); //[书名,作者,价格] // 创建一个节点
Element miaoshu = DocumentHelper.createElement("miaoshu");
miaoshu.setText("一本好书");
list.add(2,miaoshu); // 格式化输出流,同时指定编码格式。也可以在FileOutputStream中指定。
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format);
writer.write(document);
writer.close();
}
结果:
<?xml version="1.0" encoding="utf-8"?> <书架>
<书>
<书名>Java高级</书名>
<作者>武陟县</作者>
<miaoshu>一本好书</miaoshu>
<价格>200元</价格>
</书>
<书>
<书名 name="xxxxxxxxxxx">Java中级</书名>
<作者>打火机</作者>
<价格>2000元</价格>
</书>
</书架>
-----------------------------------------删除节点----------------------------------------------
// 删除节点
@Test
public void delete() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement(); // 获取第一个书节点
Element shu = (Element) root.elements("书").get(0);
Element miaoshu = (Element) shu.element("miaoshu");
// 获取到miaoshu节点的父节点并删除miaoshu节点
miaoshu.getParent().remove(miaoshu); // 格式化输出流,同时指定编码格式。也可以在FileOutputStream中指定。
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"), format);
writer.write(document);
writer.close(); }
结果:
<?xml version="1.0" encoding="utf-8"?> <书架>
<书>
<书名>Java高级</书名>
<作者>武陟县</作者>
<价格>200元</价格>
</书>
<书>
<书名 name="xxxxxxxxxxx">Java中级</书名>
<作者>打火机</作者>
<价格>2000元</价格>
</书>
</书架>
-------------------------------------修改节点-------------------------------------------------
// 修改节点
@Test
public void update() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/book.xml"));
Element root = document.getRootElement(); // 获取第一个书节点
Element shu = (Element) root.elements("书").get(0);
Element shuming = (Element) shu.element("书名");
// 获取到miaoshu节点的父节点并删除miaoshu节点
shuming.setText("一本烂书!!"); // 格式化输出流,同时指定编码格式。也可以在FileOutputStream中指定。
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"), format);
writer.write(document);
writer.close(); }
结果:
<?xml version="1.0" encoding="utf-8"?> <书架>
<书>
<书名>一本烂书!!</书名>
<作者>武陟县</作者>
<价格>200元</价格>
</书>
<书>
<书名 name="xxxxxxxxxxx">Java中级</书名>
<作者>打火机</作者>
<价格>2000元</价格>
</书>
</书架>
Dom4j向XML中指定位置添加、删除、修改节点——(五)的更多相关文章
- asp.net 实现对xml文件的 读取,添加,删除,修改
用于修改站内xml文件 已知有一个XML文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312" ...
- dom4j解析xml中指定元素下内容
需求:XML为例如以下样式,如今我仅仅想取得timer以下的5000和60000. 解决的方法例如以下: <?xml version="1.0" encoding=" ...
- ajax中向HTML页面中指定位置添加信息
$.ajax({ type : "POST", beforeSend : function() { showLoader("数据加载中...");// ...
- jQuery如何追加tr到table中任意位置--向Table中指定位置添加tr或td(jQuery)
jQuery 添加新内容有以下四个方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() ...
- js数组指定位置添加删除
示例参考:http://www.w3school.com.cn/jsref/jsref_splice.asp
- javascript数组在指定位置添加和删除元素
在JavaScript中,Array对象提供了一个强大的splice()方法,利用这个方法可以达到在数组的指定位置添加和删除元素的目的. 指定位置删除元素 要在指定位置删除元素,可以使用splice( ...
- Dom4j 操作, 节点查找 添加 删除 修改 。。。xPath
转: Dom4j 操作, 节点查找 添加 删除 修改 ...xPath 2013年11月28日 10:48:59 今晚打酱油8 阅读数:8506更多 个人分类: JavaWeb 版权声明:本文为博 ...
- eclipse中基于maven构建的web项目pom.xml中指定的jar包无法发布到tomcat中
eclipse运行maven web项目报错: 信息: Starting Servlet Engine: Apache Tomcat/7.0.57 一月 07, 2015 11:50:44 下午 or ...
- python3 替换字符串中指定位置字符
大家都知道字符串在python中是不可变数据类型,那么我们如何替换字符串中指定位置的字符呢? 字符串转换列表替换并转换解决: def replace_char(string,char,index): ...
随机推荐
- webapi Filter
webapi的controller和action的控制. 使用场景:webapi接收到加密数据以及签名.验证签名是否有效.我们不能一个个action增加判断. 所以添加Filter是比较明智的方法. ...
- Dapper 介绍
转载:http://***/html/itweb/20130918/125194_125199_125210.htm .NET 轻量级 ORM 框架 - Dapper 介绍 Dapper简单介绍: D ...
- Hdoj 1009.FatMouse' Trade 题解
Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats guarding th ...
- 自学Zabbix11.6 Zabbix SNMP自定义OID
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix11.6 Zabbix SNMP自定义OID 为什么要自定义OID? 前面已经讲过 ...
- ORACLE常用性能监控SQL
Temp表空间上进程的查询 select a.tablespace, b.sid, b.serial#, a.blocks,c.sql_text from v$sort_usage a,v$sessi ...
- JS中every()和some()的用法
every()与some()方法都是JS中数组的迭代方法. every()是对数组中每一项运行给定函数,如果该函数对每一项返回true,则返回true. some()是对数组中每一项运行给定函数,如果 ...
- apigateway-kong(六)认证
到上游服务(API或微服务)的流量通常由各种Kong认证插件的应用程序和配置来控制.由于Kong的服务实体(Service Entity)代表自己的上游服务的1对1映射,最简单的方案是在选择的服务上配 ...
- php 开启 opcache 之后 require、include 还会每次都重新加载文件吗?
当前目录有以下两个文件 index.php <?php var_dump(require 'A.php'); A.php <?php return 123; 接着运行: php -S 0. ...
- sklearn10-使用总结
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- BootStrap的表格加载json数据,并且可以搜索,选择
2018.4.11日更新,8号的时候我推荐去官网下载,但是那个版本不知道为什么我无法使用 $table.bootstrapTable('getSelections'); 无论如何...然后我尝试着更换 ...