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

 更新时间:2020年05月21日 10:07:17   作者:NO0b  
这篇文章主要介绍了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<Element>
List<Element> 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<Element> 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<Element> 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<Element> 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程序中protobuf的基本用法示例

    java程序中protobuf的基本用法示例

    这篇文章主要给大家介绍了关于java程序中protobuf的基本用法,protobuf 与json相比具有 压缩比高 、解压缩速度更快的优点,本文通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • Java实现简单碰撞检测

    Java实现简单碰撞检测

    这篇文章主要为大家详细介绍了Java实现简单碰撞检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Java 集合系列(二)ArrayList详解

    Java 集合系列(二)ArrayList详解

    这篇文章主要介绍了Java集合系列ArrayList,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 浅谈同步监视器之同步代码块、同步方法

    浅谈同步监视器之同步代码块、同步方法

    下面小编就为大家带来一篇浅谈同步监视器之同步代码块、同步方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java锁机制Lock用法示例

    Java锁机制Lock用法示例

    这篇文章主要介绍了Java锁机制Lock用法,结合具体实例形式分析了Java锁机制的相关上锁、释放锁、隐式锁、显式锁等概念与使用技巧,需要的朋友可以参考下
    2018-08-08
  • java生成随机数的方法

    java生成随机数的方法

    这篇文章主要介绍了java生成随机数的方法,涉及java随机数及字符串操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Java中的HashMap源码解析

    Java中的HashMap源码解析

    这篇文章主要介绍了Java中的HashMap源码解析,当HashMap中的其中一个链表的对象个数如果达到了8个,此时如果数组长度没有达到64,那么HashMap会先扩容解决,如果已经达到了64,那么这个链表会变成红黑树,需要的朋友可以参考下
    2023-12-12
  • IDEA 2021.3 使用及idea2021.3.1激活使用方法

    IDEA 2021.3 使用及idea2021.3.1激活使用方法

    IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,今天通过本文给大家介绍idea2021.3.1激活及使用教程,感兴趣的朋友一起看看吧
    2022-01-01
  • WebDriver中实现对特定的Web区域截图方法

    WebDriver中实现对特定的Web区域截图方法

    这篇文章主要介绍了WebDriver中实现对特定的Web区域截图方法,本文直接给出实现代码,需要的朋友可以参考下
    2015-06-06
  • Java实现读取及生成Excel文件的方法

    Java实现读取及生成Excel文件的方法

    这篇文章主要介绍了Java实现读取及生成Excel文件的方法,结合实例形式分析了java通过引入第三方jar包poi-3.0.1-FINAL-20070705.jar实现针对Excel文件的读取及生成功能,需要的朋友可以参考下
    2017-12-12

最新评论