java操作xml之dom4j的增删改查

2024-05-11 08:48
文章标签 java xml 操作 改查 增删 dom4j

本文主要是介绍java操作xml之dom4j的增删改查,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注意,保存的时候一定要注意编码问题,你的xml文档的编码类型是什么就在format那里设置一样的,否则就会乱码的。

XML测试文档:

<?xml version="1.0" encoding="UTF-8"?><商店> <商品> <名称 name="hhhh">手机</名称>  <价格>1290</价格>  <数量>90部</数量> </商品>  <商品> <名称>电脑</名称>  <价格>11290</价格>  <数量>10台</数量> </商品> 
</商店>

Demo1.java

package com.cx.dom4j;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;public class Demo1 {//读取指定标签@Testpublic void read() throws Exception {//得到解析器SAXReader reader = new SAXReader();Document document = reader.read(new File("src/test.xml"));//读取第一个String price = document.getRootElement().element("商品").element("价格").getText();//读取第二个Element goods = (Element)document.getRootElement().elements("商品").get(1);String price2 = goods.element("价格").getText();//获取属性String attr = document.getRootElement().element("商品").element("名称").attributeValue("name");System.out.println(price);System.out.println(price2);System.out.println(attr);}//增加操作@Testpublic void add() throws Exception{//获得解析器SAXReader reader = new SAXReader();//读取xmlDocument document = reader.read(new File("src/test.xml"));//处理xml,向第一个商品里添加一个优惠标签,在价格之前//创建标签Element cut = DocumentHelper.createElement("优惠");cut.setText("7折");//获得第一个商品下的所有标签List list = document.getRootElement().element("商品").elements();//此时,list的存放的数据为[名称、价格、数量]list.add(1,cut);//格式化OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");//设置编码//保存XMLWriter writer = new XMLWriter(new FileOutputStream("src/test.xml"),format);writer.write(document);writer.close();}//删除操作@Testpublic void delete() throws DocumentException, IOException{//得到解析器SAXReader reader = new SAXReader();Document document = reader.read(new File("src/test.xml"));//删除属性Element goods = document.getRootElement().element("商品").element("名称");goods.remove(goods.attribute("name"));//删除标签Element cut = document.getRootElement().element("商品").element("优惠");cut.getParent().remove(cut);//格式化OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");//设置编码//保存XMLWriter writer = new XMLWriter(new FileOutputStream("src/test.xml"),format);writer.write(document);writer.close();}//修改标签@Testpublic void update() throws Exception{//取得解析器SAXReader reader = new SAXReader();Document document = reader.read(new File("src/test.xml"));List<Element> list = document.getRootElement().elements("商品");Element goods = list.get(1);goods.element("名称").setText("999");//格式化OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");//设置编码//保存XMLWriter writer = new XMLWriter(new FileOutputStream("src/test.xml"),format);writer.write(document);writer.close();}}

这篇关于java操作xml之dom4j的增删改查的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979056

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具