XML解析-Dom4j的DOM解析方式更新XML

Dom4j工具,是非官方的,不在jdk中。

使用步骤:

1)导入dom4j的核心包。 dom4j-1.6.1.jar

2)编写Dom4j读取xml文件的代码


1、更新XML


1.1、写出内容到xml文档

package com.rk.xml.g_dom4j_write;import java.io.File;
import java.io.FileOutputStream;import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;/*** 第一个写出内容到xml文档* @author RK**/
public class Demo01
{public static void main(String[] args) throws Exception{//一、读取或创建一个Document对象Document doc = new SAXReader().read(new File("./src/animals.xml"));//二、修改Document对象内容//三、把修改后的Document对象写出到xml文档中//指定文件输出的位置FileOutputStream outStream = new FileOutputStream("D:/rk/result.xml");//1.创建写出对象XMLWriter writer = new XMLWriter(outStream);//2.写出Document对象writer.write(doc);//3.关闭流writer.close();System.out.println("执行结束!");}
}


1.2、写出内容到xml文档的细节

package com.rk.xml.g_dom4j_write;import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;/*** 讨论写出内容到xml文档的细节* @author RK**/
public class Demo02
{public static void main(String[] args) throws Exception{Document doc = new SAXReader().read(new File("./src/animals2.xml"));/*** 1.指定写出的格式*/
//      OutputFormat format = OutputFormat.createCompactFormat();//紧凑的格式.去除空格换行.项目上线的时候OutputFormat format = OutputFormat.createPrettyPrint();//漂亮的格式.有空格和换行.开发调试的时候/*** 2.指定生成的xml文档的编码*    同时影响了xml文档保存时的编码  和  xml文档声明的encoding的编码(xml解析时的编码)*    结论: 使用该方法生成的xml文档避免中文乱码问题。*/format.setEncoding("UTF-8");//指定文件输出的位置FileOutputStream outStream = new FileOutputStream("D:/rk/result.xml");//1.创建写出对象XMLWriter writer = new XMLWriter(outStream, format);//2.写出Document对象writer.write(doc);//3.关闭流writer.close();System.out.println("执行结束!");}
}


1.3、修改xml内容:添加、修改、删除

package com.rk.xml.g_dom4j_write;import java.io.File;
import java.io.FileOutputStream;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Node;
import org.dom4j.Element;
import org.dom4j.Attribute;
import org.dom4j.Text;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.OutputFormat;
import org.junit.Test;/*** 修改xml内容* 增加:文档,标签 ,属性* 修改:属性值,文本* 删除:标签,属性* @author RK**/
public class Demo03
{/*** 增加:文档,标签 ,属性*/@Testpublic void testAdd() throws Exception{//1.创建文档Document doc = DocumentHelper.createDocument();//2.增加标签Element rootElement = doc.addElement("ContactList");Element contactElement = rootElement.addElement("Contact");Element nameElement = contactElement.addElement("Name");nameElement.setText("小明");//3.增加属性contactElement.addAttribute("id", "c001");contactElement.addAttribute("region", "北京");//把修改后的Document对象写出到xml文档中FileOutputStream out = new FileOutputStream("D:/rk/contact.xml");OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer = new XMLWriter(out,format);writer.write(doc);writer.close();System.out.println("执行结束!");}/*** 修改:属性值,文本*/@Testpublic void testModify() throws Exception{Document doc = new SAXReader().read(new File("./src/animals.xml"));/*** 方案一: 修改属性值   1.得到标签对象 2.得到属性对象 3.修改属性值*///1.1  得到标签对象Element catElement = doc.getRootElement().element("Cat");//1.2 得到属性对象Attribute catAttr = catElement.attribute("id");//1.3 修改属性值catAttr.setValue("c100");/*** 方案二: 修改属性值*///2.1  得到标签对象Element dogElement = doc.getRootElement().element("Dog");//2.2 通过增加同名属性的方法,修改属性值dogElement.addAttribute("id", "d100");/*** 修改文本 1.得到标签对象 2.修改文本*/Element nameElement = doc.getRootElement().element("Cat").element("Home");nameElement.setText("第六宇宙");FileOutputStream out = new FileOutputStream("D:/rk/Animals.xml");OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer = new XMLWriter(out,format);writer.write(doc);writer.close();System.out.println("执行结束!");}/*** 删除:标签,属性*/@Testpublic void testDelete() throws Exception{Document doc = new SAXReader().read(new File("./src/animals.xml"));/*** 1.删除标签     1.1 得到标签对象  1.2 删除标签对象    */// 1.1 得到标签对象Element nameElement = doc.getRootElement().element("Cat").element("Home");//1.2 删除标签对象nameElement.detach();
//      nameElement.getParent().remove(nameElement);/*** 2.删除属性   2.1得到属性对象  2.2 删除属性*/Element catElement = doc.getRootElement().element("Cat");//2.1得到属性对象Attribute idAttr = catElement.attribute("id");//2.2 删除属性idAttr.detach();
//      idAttr.getParent().remove(idAttr);FileOutputStream out = new FileOutputStream("D:/rk/animals.xml");OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer = new XMLWriter(out,format);writer.write(doc);writer.close();System.out.println("执行结束!");}
}

2、思维导图

wKioL1c2J2mQaTfAAAHmv1_GZM0598.png


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爱奇艺如何设置最小化显示在托盘

相信很多朋友都有在使用爱奇艺,那么大家对食物爱奇艺的过程当中如何设置最小化显示在托盘呢?关于这个问题小编就和大家分享一下我的经验,希望能够帮助到大家。 爱奇艺会员活动2020_爱奇艺如何设置最小化显示在托盘 1、首先点击电脑桌面中的爱奇艺&…

傲游浏览器怎么看网页源代码 网页源代码查看方法简述

网页源代码,顾名思义就是指在网页制作过程中需要用到的一些特殊的“语言”,设计人员向通过对这些“语言”进行组织编排制作出网页,再由浏览器进行“翻译”后才会出现用户最终看到的效果。那么,在傲游浏览器中该怎么看网页源代码呢…

Qt前端技术:5.QSS

这个是表示QFrame中的pushButton中的子类和它子类的子类都将背景变为red 写成大于的时候表示只有直接的子类对象才会变 这个图中的QGroupBox和QPushButton都是QFrame的直接的子类 这个中的QGroupBox是QFrame的直接的子类但是QPushButton 是QGroupBox的子类,QPushB…

Spring定时任务的几种实现

近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合 spring框架来介绍。 一.分类 从…

搜狗高速浏览器主页被篡改怎么办 搜狗浏览器中恢复被篡改主页的方法

搜狗浏览器是一款还不错的浏览器,我们在使用搜狗浏览器的过程中发现主页被篡改怎么办呢?接下来我们一起往下看看搜狗浏览器中恢复被篡改主页的方法吧。 方法步骤 1、首先打开我的搜狗浏览器发现我的主页已经被篡改成hao123的主页了; 搜狗高速浏览器主页被篡改怎…

解决quartz的job无法注入spring对象

一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用spring-quartz提供的AdaptableJobFactory类。 自定义一个类: [java] view plaincopy public class JobFactory extends AdaptableJobFactory { Autowired …

谷歌Chrome浏览器如何开启无痕模式 Chrome浏览器无痕模式开启方法

在访问一些特殊网站时,许多人都会开启浏览器自带的无痕模式,以免除一些不必要的麻烦。那么,谷歌Chrome浏览器要如何开启无痕模式呢?不清楚操作方法的朋友,不妨参考一下小编分享的Chrome浏览器无痕模式开启方法。 方法步骤 点击…

搜狗浏览器怎么实现图标旋转 搜狗浏览器实现图标旋转的方法

搜狗浏览器是一款大家经常使用的浏览器,你到知道搜狗浏览器中有一个非常有趣的功能就是图标旋转,那你知道在搜狗浏览器是怎么实现图标旋转的吗?接下来我们呢一起往下看看搜狗浏览器实现图标旋转的方法吧。 方法步骤 1、打开搜狗浏览器动态图标插件的下…

AngularJS+Jersey下载excel

AngularJS代码: $scope.testDownload function () { $http.post("rest/excel/down", $scope.req, {responseType:arraybuffer}).success(function (data) { varblob new Blob([data], {type:"application/vnd.ms-excel"}); varfileName "…

火狐浏览器摄像头权限怎么开启 火狐浏览器摄像头权限开启的方法

火狐浏览器是我们大家经常使用的浏览器之一,在使用这款浏览器的过程有时候需要使用到摄像头,那你知道火狐浏览器摄像头权限怎么开启的吗?接下来我们一起往下看看火狐浏览器摄像头权限开启的方法吧。 方法步骤 1、打开火狐浏览器,点击右上角…

Activiti 基础概念

1、ProcessInstance 与ProcessDefinition 流程实例(ProcessInstance)和流程定义(ProcessDefinition)的关系,与类和实例对象的关系有点像,ProcessDefinition是整个流程步骤的说明而ProcessInstance就是指流程…

优酷视频如何修改账号密码?

一.pc端:您能够立即登陆【点一下这儿】密码重置哦~或是能够按下列方式实际操作哦。 1.登陆本站,网页页面最上边【登陆】功能键,登陆界面右下角点一下【密码忘了】。 优酷视频如何修改账号密码? 2.请输入的手机上/电子邮箱&…

MD5加密工具类

这是一个个人认为非常好用的使用MD5salt加密的工具类,一部分代码由网上搜索而得,一部分自己修改添加之后而得。使用这个工具类,非常简单,从前台拿到密码passwd,直接HexUtil.getEncryptedPwd(passwd)就可以返回一个长度…

win7系统笔记本电脑开机蓝屏怎么办

我们在使用电脑的时候难免不了会y遇到一些问题,比如电脑蓝屏或者黑屏的情况出现,就有一位win7系统用户遇到了笔记本电脑开机蓝屏的情况,win7系统笔记本电脑开机蓝屏怎么办?就此问题,让我们一起来聊聊windows7笔记本电脑开机蓝屏解…

回调函数中window.open()被拦截

在回调函数中window.open默认是会被拦截的,因为浏览器判断它不是用户自己打开的,存在安全风险,所以可以伪造一个用户点击事件来避开,代码如下: function newWindow(url, id) { var a document.createElement(a); a.se…

Win7电脑定时关机怎么设置

想必大家一定有遇到过这样的烦恼吧,电脑文件下载到一半或传输到一半的时候,而你有事需外出,关机吧太可惜了,不关机吧又浪费电,还会影响电脑的使用寿命,那么该如何是好呢?这时候选择电脑定时关机是最好的解…

Joda-Time几个用法小记

1, 获取每天的零点 DateTime dtnew DateTime().withMillisOfDay(0); System.out.println(dt.toString("yyyy-MM-dd HH:mm:ss"));//结果 2016-09-09 00:00:00 2, 在每天的6:30处理一些东西 DateTime dtnew DateTime().withHourOfDay(6).withMinuteOfHour(30).withSe…

win7系统找不到我的电脑图标的应对办法

我们在使用win7系统电脑的过程中或多或少都会遇到一些问题,最近有用户表示自己在使用电脑时发现我的电脑图标不见了,怎么显示我的电脑图标?针对用户提出的问题,今天小编就和大家分享一下win7系统找不到我的电脑图标的应对办法,大…

浏览器中播放rtsp(不依赖vlc插件)

之前是通过vlc插件来显示rtsp流视频,但是限制很多:1.要安装vlc的插件2.插件目前只支持ie,像chrome在46版本之后根本就无法使用,于是上网搜索得出rtsp->rtmp->videoJS这样的一个方案,具体流程如下: 一…

腾讯视频中如何把视频进行收藏

在线观看视频的时候,把喜欢的视频收藏下来,可以方便以后再看。腾讯视频如何进行收藏呢? 腾讯下载视频怎么转格式_腾讯视频中如何把视频进行收藏 1、找到桌面上的快捷方式,双击打开程序 腾讯下载视频怎么转格式_腾讯视频中如何把视频进行收…