Dom4j向XML中指定位置添加、删除、修改节点——(五)
需求:
在第一本书作者后面增加描述 <描述>好书</描述>
思路:获取书下面下的所有节点(一个list集合),在list集合指定位置添加一个元素(list.add(index,object)),最后写入原xml文档。
原来XML文档
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <书架> 4 <书> 5 <书名>Java高级</书名> 6 <作者>武陟县</作者> 7 <价格>200元</价格> 8 </书> 9 <书> 10 <书名 name="xxxxxxxxxxx">Java中级</书名> 11 <作者>打火机</作者> 12 <价格>2000元</价格> 13 </书> 14 </书架>
-------------------------------------------------------指定位置添加节点-------------------------------------
Java代码:
1 // 在指定位置添加一个节点 2 @Test 3 public void test2() throws Exception { 4 SAXReader reader = new SAXReader(); 5 Document document = reader.read(new File("src/book.xml")); 6 Element root = document.getRootElement(); 7 8 // 获取第一个书节点 9 Element shu = (Element) root.elements("书").get(0); 10 // 获取第一个节点下的所有节点 11 List list = shu.elements(); //[书名,作者,价格] 12 13 // 创建一个节点 14 Element miaoshu = DocumentHelper.createElement("miaoshu"); 15 miaoshu.setText("一本好书"); 16 list.add(2,miaoshu); 17 18 // 格式化输出流,同时指定编码格式。也可以在FileOutputStream中指定。 19 OutputFormat format = OutputFormat.createPrettyPrint(); 20 format.setEncoding("utf-8"); 21 22 XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),format); 23 writer.write(document); 24 writer.close(); 25 }
结果:
<?xml version="1.0" encoding="utf-8"?> <书架> <书> <书名>Java高级</书名> <作者>武陟县</作者> <miaoshu>一本好书</miaoshu> <价格>200元</价格> </书> <书> <书名 name="xxxxxxxxxxx">Java中级</书名> <作者>打火机</作者> <价格>2000元</价格> </书> </书架>
-----------------------------------------删除节点----------------------------------------------
1 // 删除节点 2 @Test 3 public void delete() throws Exception { 4 SAXReader reader = new SAXReader(); 5 Document document = reader.read(new File("src/book.xml")); 6 Element root = document.getRootElement(); 7 8 // 获取第一个书节点 9 Element shu = (Element) root.elements("书").get(0); 10 Element miaoshu = (Element) shu.element("miaoshu"); 11 // 获取到miaoshu节点的父节点并删除miaoshu节点 12 miaoshu.getParent().remove(miaoshu); 13 14 // 格式化输出流,同时指定编码格式。也可以在FileOutputStream中指定。 15 OutputFormat format = OutputFormat.createPrettyPrint(); 16 format.setEncoding("utf-8"); 17 18 XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"), format); 19 writer.write(document); 20 writer.close(); 21 22 }
结果:
<?xml version="1.0" encoding="utf-8"?> <书架> <书> <书名>Java高级</书名> <作者>武陟县</作者> <价格>200元</价格> </书> <书> <书名 name="xxxxxxxxxxx">Java中级</书名> <作者>打火机</作者> <价格>2000元</价格> </书> </书架>
-------------------------------------修改节点-------------------------------------------------
1 // 修改节点 2 @Test 3 public void update() throws Exception { 4 SAXReader reader = new SAXReader(); 5 Document document = reader.read(new File("src/book.xml")); 6 Element root = document.getRootElement(); 7 8 // 获取第一个书节点 9 Element shu = (Element) root.elements("书").get(0); 10 Element shuming = (Element) shu.element("书名"); 11 // 获取到miaoshu节点的父节点并删除miaoshu节点 12 shuming.setText("一本烂书!!"); 13 14 // 格式化输出流,同时指定编码格式。也可以在FileOutputStream中指定。 15 OutputFormat format = OutputFormat.createPrettyPrint(); 16 format.setEncoding("utf-8"); 17 18 XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"), format); 19 writer.write(document); 20 writer.close(); 21 22 }
结果:
<?xml version="1.0" encoding="utf-8"?> <书架> <书> <书名>一本烂书!!</书名> <作者>武陟县</作者> <价格>200元</价格> </书> <书> <书名 name="xxxxxxxxxxx">Java中级</书名> <作者>打火机</作者> <价格>2000元</价格> </书> </书架>
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了