Dom4j修改xml文件
DocumentHelper.createDocument();
package com.dom4j.write;
import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Attribute;
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.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* 写出内容到xml文档
* @author zhiyong
*
*/
public class Demo1 {
public static Document document;
/**
* 首先加载或者创建一个Document对象
* @throws DocumentException
*/
@Before
public void beforeTest() throws Exception{
/*
* 1.读取或者创建一个Document对象
*/
//读取"/src/contact2.xml"文件
SAXReader reader = new SAXReader();
//获取Document对象
document = reader.read(new File("./src/contact2.xml"));
/**
*DocumentHelper.createDocument();创建Document文档对象
*/
// document = DocumentHelper.createDocument();
}
/*
*2. 修改Document对象内容
* 增加:标签、属性
* 修改:属性值、文本
* 删除:标签、属性
*/
/**
* 增加:标签、属性
* @throws Exception
*/
@Test
public void testAdd() throws Exception {
/*
* 增加:标签
*/
Element root = document.addElement("contactList");//一个xml文档只能存在一个根标签
Element ele1 = root.addElement("contact");
/*
* 添加属性:
*/
ele1.addAttribute("id", "001");
ele1.addAttribute("name", "contactName");
Element child01 = ele1.addElement("name");
/*
* 添加文本
*/
child01.addText("木丁西");
Element child02 = ele1.addElement("age");
child02.addText("18");
Element child03 = ele1.addElement("email");
child03.addText("1012421396@qq.com");
Element child04 = ele1.addElement("qq");
child04.addText("1012421396");
Element ele2 = root.addElement("contact");
ele2.addAttribute("id", "002");
Element child11 = ele2.addElement("name");
child11.addText("刘先森");
Element child12 = ele2.addElement("age");
child12.addText("22");
Element child13 = ele2.addElement("email");
child13.addText("541247820@qq.com");
Element child14 = ele2.addElement("qq");
child14.addText("101242134");
}
/**
* 修改:属性值、文本
* @throws Exception
*/
@Test
public void testUpdate() throws Exception {
/*
* 修改属性值
*方案1:1.得到标签对象 2.得到属性对象 3.修改属性值 【推荐】
*/
//获取标签对象
Element contactEle = document.getRootElement().element("contact");
//得到属性对象
Attribute idAttr = contactEle.attribute("id");
//修改属性值
idAttr.setValue("003");
/*
* 方案2:修改属性值:1.得到标签对象 2.直接修改【不推荐使用】
*/
contactEle.setAttributeValue("id", "004");
/*
* 方法3:修改属性值:1.得到标签对象 2.通过增加同名属性的方法,覆盖修改属性值
*/
contactEle.addAttribute("id", "005");
/*
* 修改文本
*方案1:1.得到标签对象 2..修改文本
*/
Element nameEle = document.getRootElement().element("contact").element("name");
nameEle.setText("曾用名");
}
/**
* 删除:标签、属性
* @throws Exception
*/
@Test
public void testDelete() throws Exception {
/*
* 删除标签方式1:1.获取标签对象 2.删除(自杀)
*/
/* //获取标签对象
Element emailEle = document.getRootElement().element("contact").element("email");
//删除标签。自杀
emailEle.detach();*/
/*
* 删除标签方式2:1.获取标签对象的父标签 2.删除子标签
*/
//拿到第2个contact标签对象,再获取“name”标签
Element nameEle = document.getRootElement().elementByID("002").element("name");
Element nameParent = nameEle.getParent();
nameParent.remove(nameEle);
/*
* 删除属性方式1:1.找到属性标签对象 2.删除属性
*/
//拿到第2个contact标签对象
Element contactEle2 = (Element)document.getRootElement().elements("contact").get(1);
Attribute idAttr = contactEle2.attribute("id");//获取id属性对象
idAttr.detach();//自杀
/*
* 删除属性方式2:1.找到属性标签对象 2.remove删除对象
*/
contactEle2.remove(idAttr);
}
/**
* 3.最后把修改后的Document对象写出到xml文档中
*/
@After
public void testAfter() throws Exception {
//指定文件输出的位置
FileOutputStream out = new FileOutputStream("./src/contact4.xml");
/*
* 指定写出的格式
*/
// OutputFormat format = OutputFormat.createCompactFormat();//紧凑的格式,去除了空格和换行。占用容量小。项目上线的时候用
OutputFormat format = OutputFormat.createPrettyPrint();//漂亮格式,包含空格和换行。占用容量大。开发调试的时候用
/*
* 指定生成文档的编码格式
* 同时影响了xml文档保存时的编码和xml文档声明的encoding的编码(xml解析时的编码)
* 结论:使用该方法生成的XML文档可以避免中文乱码问题
*/
format.setEncoding("utf-8");
//创建写出对象
// XMLWriter writer = new XMLWriter(out);
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
//关闭资源原则:先开后关,后开后关
writer.close();
out.close();
}
}
Dom4j修改xml文件相关推荐
- java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...
网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...
- dom4j读写xml文件
dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator ...
- java项目——Dom4j读取XML文件保存orecal数据库
上一篇介绍了如何利用dom4j读取xml文件,连接数据库,换数据库的话直接修改XML文件,使配置更加灵 活,本篇博客主要介绍一下如何将XML文件导入到orecal数据库中. XML在现在的项目中的应用 ...
- java jdom dom4j_Java基础系列17:使用DOM、SAX、JDOM、DOM4J解析XML文件详解
一 简介 在Java中,可以使用多种方式来解析XML文件,其中最常见的可能就是DOM.SAX.JDOM.DOM4J这四种方式了.其中,DOM和SAX这两种解析XML文件的方式有jdk自带的API,因此 ...
- DOM4j读取XML文件(SAXReader)
为什么80%的码农都做不了架构师?>>> DOM4j读取XML文件(SAXReader) 一.一个很好的SAXReader读写xml文件的例题: 总结: Document do ...
- 使用dom4j解析XML文件
为什么80%的码农都做不了架构师?>>> dom4j是一个java 的XML API,用来读写XML文件. 使用dom4j解析XML文件,首先需要在官网下载dom4j-1.6. ...
- Java 操纵XML之修改XML文件
Java 操纵XML之修改XML文件 一.JAVA DOM PARSER DOM interfaces The DOM defines several Java interfaces. Here ar ...
- python处理xml文件_Python解析并修改XML文件
XML 本质上只是一种数据格式,它的本意并不是管理数据,因此,在 XML 应用中,数据的管理仍然要借助数据库,尤其是当数据量很大.性能要求很高的时候. XML数据库具有以下优势: XML数据库能够对半 ...
- dom4j读取XML文件内容
转载自 dom4j读取XML文件内容 <?xml version="1.0" encoding="UTF-8"?> <RESULT> ...
最新文章
- GitHub/GitLab/Gitee中项目互拷贝后仍保留历史提交记录的方法
- WDS Services Can't Start
- SMO算法(比较好的讲解)
- DWZ与百度编辑器的IE8以下上传图片兼容问题
- c盘users的用户名怎么改_怎么修改iPhone备份文件夹路径 iPhone C盘路径修改教程【详解】...
- android 信号强度变化,Android监听WIFI网络的变化并且获得当前信号强度
- jenkins 集成java搅拌_如何将Gauge与Jenkins集成
- 《spring-boot学习》-12-@controller和@RestController的区别?
- Qt加载RGB内存数据,并显示彩色图
- vista iis7上安装php4.4.7
- 云承软件和云溪哪个好_诺承木工开料机使用什么软件好
- 密码学基础之对称密钥的分发和存储
- 2019年2月10日训练日记
- 检查mysql被挂马_对付数据库被挂马有绝招
- python通过串口发送bin文件
- 以“空城计”为例的项目管理执行方法论干货
- Vue基础学习笔记Day05_生命周期_axios
- 上班时间如何偷偷刷抖音不被发现?教你一招搞定
- NPOI 连续插入多张图片的办法,及部分样式的代码
- jQuery制作手风琴
热门文章
- 醉汉漫步 Drunkard's walk
- 安装erlang没有bin文件夹_Erlang安装简介
- kafka server broker参数配置
- DelayedOperationPurgatory机制(七):DelayedFetch实现
- 打牌博弈 dfs深度优先遍历搜索 排课表 拓扑排序 升序字符串 动态规划 剑指offer编程题整理 leetcode每日算法题
- 英语四级万能写作模板
- dell服务器卡在启动界面_Dell PowerEdge 服务器启动指南
- L1-059 敲笨钟 (20 分) java语言
- Hive SQL数据查询基础
- 公务员计算机类面试真题及答案,2019国家公务员考试面试真题及答案——现象类题...