需求:

  在第一本书作者后面增加描述 <描述>好书</描述> 

  思路:获取书下面下的所有节点(一个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中指定位置添加、删除、修改节点——(五)的更多相关文章

  1. asp.net 实现对xml文件的 读取,添加,删除,修改

    用于修改站内xml文件 已知有一个XML文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312" ...

  2. dom4j解析xml中指定元素下内容

    需求:XML为例如以下样式,如今我仅仅想取得timer以下的5000和60000. 解决的方法例如以下: <?xml version="1.0" encoding=" ...

  3. ajax中向HTML页面中指定位置添加信息

    $.ajax({  type : "POST",  beforeSend : function() {   showLoader("数据加载中...");// ...

  4. jQuery如何追加tr到table中任意位置--向Table中指定位置添加tr或td(jQuery)

    jQuery 添加新内容有以下四个方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() ...

  5. js数组指定位置添加删除

    示例参考:http://www.w3school.com.cn/jsref/jsref_splice.asp

  6. javascript数组在指定位置添加和删除元素

    在JavaScript中,Array对象提供了一个强大的splice()方法,利用这个方法可以达到在数组的指定位置添加和删除元素的目的. 指定位置删除元素 要在指定位置删除元素,可以使用splice( ...

  7. Dom4j 操作, 节点查找 添加 删除 修改 。。。xPath

    转: Dom4j 操作, 节点查找 添加 删除 修改 ...xPath 2013年11月28日 10:48:59 今晚打酱油8 阅读数:8506更多 个人分类: JavaWeb   版权声明:本文为博 ...

  8. eclipse中基于maven构建的web项目pom.xml中指定的jar包无法发布到tomcat中

    eclipse运行maven web项目报错: 信息: Starting Servlet Engine: Apache Tomcat/7.0.57 一月 07, 2015 11:50:44 下午 or ...

  9. python3 替换字符串中指定位置字符

    大家都知道字符串在python中是不可变数据类型,那么我们如何替换字符串中指定位置的字符呢? 字符串转换列表替换并转换解决: def replace_char(string,char,index): ...

随机推荐

  1. AOP 获取 RequestContextHolder

    转载: http://blog.csdn.net/lexang1/article/details/52619215 在使用spring时,经常需要在普通类中获取session,request等对像. ...

  2. MT【207】|ax^2+bx+c|中判别式$\Delta$的含义

    已知$a,b\in R^+,a+b=2$且对任意的$x\in R$,均有$|2x^2+ax-b|\ge|x^2+cx+d|$则$\dfrac{d-4c}{cd}$的最小值______ 提示:注意到$\ ...

  3. 51Nod - 1107 斜率小于0的连线数量

    二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...

  4. 自学Aruba3.1-Aruba配置架构-WLAN配置架构

    点击返回:自学Aruba之路 自学Aruba3.1-Aruba配置架构- WLAN配置架构  WLAN配置架构 1. AP group : Aruba无线控制器通过AP Group来构建无线网络配置参 ...

  5. emwin 解决在A窗口上新建B窗口后‘只激活’B窗口问题

    @2018-08-08 问题来源: 要实现A窗口上的参数修改,通过A窗口上新建的B窗口小键盘实现数据录入,但结果是只要点击A窗口上的任何地方(包括B窗口上的任意位置),则B窗口就消失了 解决办法: 使 ...

  6. Hihocoder 1329 平衡树·Splay(平衡树)

    Hihocoder 1329 平衡树·Splay(平衡树) Description 小Ho:小Hi,上一次你跟我讲了Treap,我也实现了.但是我遇到了一个关键的问题. 小Hi:怎么了? 小Ho:小H ...

  7. Android开发属性动画

    普通动画效果和属性动画效果区别: 普通动画效果的动画播放后只是产生了视觉欺骗,并没有移动真实的控件. 属性动画直接真实的移动控件 AnimationSet动画: TextView t1 = (Text ...

  8. csp20160904解题报告

    dijkstra+贪心 每次加一个到起始点(首都)距离最小的点. 然后加边,这个最小点必然通过一条边和已加入的某个点相连,在这个最小点与已加入的点相连的边中,选取最短的一条边加入. 证明如下: 前提: ...

  9. python爬虫爬取页面源码在本页面展示

    python爬虫在爬取网页内容时,需要将内容连同内容格式一同爬取过来,然后在自己的web页面中显示,自己的web页面为django框架 首先定义一个变量html,变量值为一段HTML代码 >&g ...

  10. window netsh interface portproxy 配置转发

    系统版本 windows server2016 datacenter 1.配置443.80端口转发到其他服务器的443.80上 netsh interface portproxy add v4tov4 ...