热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Java使用dom4j实现对xml简单的增删改查操作示例

这篇文章主要介绍了Java使用dom4j实现对xml简单的增删改查操作,结合实例形式详细分析了Java使用dom4j实现对xml简单的增删改查基本操作技巧与相关注意事项,需要的朋友可以参考下

本文实例讲述了Java使用dom4j实现对xml简单的增删改查操作。分享给大家供大家参考,具体如下:

xml留了个结课作业: 后台用xml文件作为存储做个迷你系统实现增删改查的功能, 在此记录一下

先得引入dom4j的jar包放在项目的WEB-INF-->lib目录下

先新建一个读取器,  读取你想操作的xml文件(我这里写的绝对路径)

//读取XML文件,获得document对象
SAXReader reader = new SAXReader();
Document document = null;
try {
	document = reader.read(new File("E:\\eclipse\\XmlTest\\src\\xml\\user.xml"));
} catch (DocumentException e) {
	e.printStackTrace();
}

上边的try catch不加的话eclipse会报错, 因为涉及到文件操作, document不初始为null化也会报错

//获得根节点的属性对象
Element rootElem = document.getRootElement();

基本语句:

//以下操作以root为例,所有节点都可以并非只有根节点,下面的孩子指第一代孩子
 
//返回root节点的标签名为"user"的孩子节点,如果有多个只返回第一个
Element cOntactElem= rootElem.element("user");
 
//获取节点标签之间的内容
String text=contactElem .getText();
 
//返回所有的孩子节点,即一个List
List eles = rootElem.elements();
 
//返回该节点的属性,返回的是一个对象
Attribute rootAttr = rootElem.attribute("id");
 
//更改属性值
rootAttr.setValue("更改后的id值");
 
//给元素新增属性和属性值
rootElem.addAttribute("name", "新增成功!");
 
//删除节点的某属性
rootElem.remove(rootAttr);
 
//节点和节点的属性都可以获取名字(标签名/属性名)
String idName = rootAttr.getName();
String tagName = rootElem.getName();
 
//获取属性的属性值
String value=rootAttr.getValue();
 

所有涉及到修改增加的操作, 修改完dom对象后都要写回文件:

OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File(这里填你的xml路径)), format);
writer.write(document);
writer.close();

 以下都省略文件的读取和document / rootElem的获取(上面提到过)

我这里有个用户表如下, 做后端的账号密码存储

//user, password是前台传来的账号密码
boolean RightPassword=false;
List eles = rootElem.elements();
for (Element ele : eles) 
{
  if(ele.element("account").getText().equals(user))
  {
  	if(ele.element("password").getText().equals(password))
  		RightPassword=true;
  	return;
  }
}

这里拿另一个xml举例, 该xml存储文章

示例增加一个文章,大家可以做的更复杂一些

Element newArticle=rootElem.addElement("article");
newArticle.setText("文章内容");
//以下的输出文件和上面提到的一样
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路径")), format);
writer.write(document);
writer.close();

下面示例按标签内容删除一个节点

(应该按某个属性值如id删除,因为上例追求简单没设属性)

List eles = rootElem.elements();
for (Element ele : eles) 
{
	if(ele.getText().equals("按照内容删除"))
	{
		rootElem.remove(ele);
	}
}
//以下的输出文件和上面提到的一样
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路径")), format);
writer.write(document);
writer.close();

和上面的删除只有一句不同, 找到节点后想修改什么就 set什么就可以了

List eles = rootElem.elements();
for (Element ele : eles) 
{
	if(ele.getText().equals("按照内容修改"))
	{
		ele.setText("修改后的内容");
	}
}
//以下的输出文件和上面提到的一样
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
org.dom4j.io.XMLWriter writer=new org.dom4j.io.XMLWriter(new FileOutputStream(new File("你的xml路径")), format);
writer.write(document);
writer.close();

PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:

在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson

在线格式化XML/在线压缩XML
http://tools.jb51.net/code/xmlformat

XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress

XML代码在线格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • python限制递归次数(python最大公约数递归)
    本文目录一览:1、python为什么要进行递归限制 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。使用Gson解析json成对象时,默认将json里对应字段的值解析到java对象里对应字段的属性里面。然而,当我们自己定义的java对象里的属性名与json里的字段名不一样时,我们可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。本文介绍了使用@SerializedName注解解析json数据的方法,并给出了具体的使用示例。 ... [详细]
author-avatar
实事求是2502932297
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有