06_XML的写入_dom4j添加、删除、修改Xml文件内容
【工程截图】

【person.xml】准备一个xml文件
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="88888" phone="15888888888" sex="男">
<name>张三</name>
<age>18</age>
<school>清华</school>
</student>
<student id="99999" phone="15999999999" sex="女">
<name>李四</name>
<age>28</age>
<school>北大</school>
</student>
<AAAA>
<aa1>aa111</aa1>
<aa2>aa222</aa2>
</AAAA>
<BBBB></BBBB>
</students>
【读取原有Xml文件的内容,然后将数据写入到磁盘上】
package com.Higgin.dom4j; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
* 读出原有xml文件的内容数据,然后将数据写入到磁盘上的XML文件
*/
public class WriteDemo01 { public static void main(String[] args) throws DocumentException, IOException {
//读取已存在的Xml文件person.xml
Document doc=new SAXReader().read(new File("./src/person.xml")); //指定文件输出的位置
FileOutputStream out =new FileOutputStream("d:/student.xml"); //1.创建写出对象
XMLWriter writer=new XMLWriter(out); //2.写出Document对象
writer.write(doc); //3.关闭流
writer.close();
}
}
【运行结果】内容和person.xml一致

【按照设定的格式将xml内容输出保存到对应的磁盘地址上】
package com.Higgin.dom4j; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; /**
* 1.读出原有xml文件的内容数据,保存至Document对象
* 2.修改输出的format(输出格式、编码...)
* 3.然后将document包含数据写入到磁盘上的XML文件
*/
public class WriteDemo02 { public static void main(String[] args) throws DocumentException, IOException {
//读取已存在的Xml文件person.xml
Document doc=new SAXReader().read(new File("./src/person.xml")); //指定文件输出的位置
FileOutputStream out =new FileOutputStream("d:/student.xml");
/**
* 指定文本的写出的格式:
* 紧凑格式 :项目上线时候使用
* 漂亮格式:开发调试的时候使用
*/
//OutputFormat format=OutputFormat.createCompactFormat(); //紧凑格式:去除空格换行
OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格换行 /**
* 指定生成的xml文档的编码影响了:
* 1.xml文档保存时的编码
* 2.xml文档声明的encoding编码(Xml解析时的编码)
* 结论:使用该方法生成Xml文档可以避免中文乱码问题
*/
format.setEncoding("UTF-8"); //1.创建写出对象
XMLWriter writer=new XMLWriter(out,format); //2.写出Document对象
writer.write(doc); //3.关闭流
writer.close();
}
}
【运行结果】
同样在D盘下生成了一个student.xml文件
1.紧凑格式:

2.漂亮格式

3.注意:
/**
* 指定生成的xml文档的编码影响了:
* 1.xml文档保存时的编码
* 2.xml文档声明的encoding编码(Xml解析时的编码)
* 结论:使用该方法生成Xml文档可以避免中文乱码问题
*/
【增、删、改 Xml文件
/**
* 1.创建Document对象,
* 添加:各种标签、属性、文本
* 修改:属性值、文本
* 删除:标签、属性
* 2.修改输出的format(输出格式、编码...)
* 3.然后将document包含数据写入到磁盘上的XML文件
*/
】
【增加:文档、标签、属性】
/**
* 增加:文档、标签、属性
*/
@Test
public void testAdd() throws DocumentException, IOException {
//1.创建文档
Document doc=DocumentHelper.createDocument();
//2.添加标签
Element rootElem=doc.addElement("root");
Element stuElem=rootElem.addElement("student");
stuElem.addElement("name");
//4.增加属性
stuElem.addAttribute("id", "88888");
stuElem.addAttribute("sex", "男");
//指定文件输出的位置
FileOutputStream out =new FileOutputStream("d:/student.xml"); // 指定文本的写出的格式:
OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格换行
format.setEncoding("UTF-8"); //1.创建写出对象
XMLWriter writer=new XMLWriter(out,format); //2.写出Document对象
writer.write(doc); //3.关闭流
writer.close();
}
【运行结果】

【修改:属性值、文本】
/**
* 修改:属性值、文本
*/
@Test
public void testUpdate() throws DocumentException, IOException{
//创建Document对象,读取已存在的Xml文件person.xml
Document doc=new SAXReader().read(new File("./src/person.xml")); /**
* 修改属性值(方案一)
* 方法:使用Attribute类(属性类)的setValue()方法
* 1.得到标签对象
* 2.得到属性对象
* 3.修改属性值
*/
/* //1.1 得到标签对象
Element stuElem=doc.getRootElement().element("student");
//1.2 得到id属性对象
Attribute idAttr=stuElem.attribute("id");
//1.3 修改属性值
idAttr.setValue("000001");
*/ /**
* 修改属性值(方案二)
* 方法:Element标签类的addAttribute("attr","value")方法
*/
/* //1.得到属性值标签
Element stuElem=doc.getRootElement().element("student");
//2.通过增加同名属性的方法,修改属性值
stuElem.addAttribute("id", "000009"); //key相同,覆盖;不存在key,则添加
*/
/**
* 修改文本
* 方法:Element标签类的setTest("新文本值")方法
* 1.得到标签对象
* 2.修改文本
*/
Element nameElem=doc.getRootElement().element("student").element("name");
nameElem.setText("王二麻子"); //指定文件输出的位置
FileOutputStream out =new FileOutputStream("d:/student.xml");
// 指定文本的写出的格式:
OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格换行
format.setEncoding("UTF-8");
//1.创建写出对象
XMLWriter writer=new XMLWriter(out,format);
//2.写出Document对象
writer.write(doc);
//3.关闭流
writer.close();
}
【删除:标签、属性】
/**
* 删除:标签、属性
*/
@Test
public void testDelete() throws DocumentException, IOException{
//创建Document对象,读取已存在的Xml文件person.xml
Document doc=new SAXReader().read(new File("./src/person.xml")); /**
* 删除标签
* 1.得到标签对象
* 2.删除标签对象(可以通过父类删除子标签,也可以自己删自己)
*/
/* Element ageElement=doc.getRootElement().element("student").element("age");
ageElement.detach(); //直接detch()删除
//ageElement.getParent().remove(ageElement); //先获取父标签,然后remove()删除子标签
*/
/**
* 删除属性
*/
//1.得到标签对象
//等同于Element stuElem=doc.getRootElement().element("student");
Element stuElem=(Element) doc.getRootElement().elements().get();
//2.得到属性对象
Attribute idAttr=stuElem.attribute("id");
//3.删除属性
idAttr.detach(); //指定文件输出的位置
FileOutputStream out =new FileOutputStream("d:/student.xml");
// 指定文本的写出的格式:
OutputFormat format=OutputFormat.createPrettyPrint(); //漂亮格式:有空格换行
format.setEncoding("UTF-8");
//1.创建写出对象
XMLWriter writer=new XMLWriter(out,format);
//2.写出Document对象
writer.write(doc);
//3.关闭流
writer.close();
}
06_XML的写入_dom4j添加、删除、修改Xml文件内容的更多相关文章
- Java&Xml教程(七)使用JDOM修改XML文件内容
JDOM提供了非常灵活的方式操作XML文件,使用JDOM非常简单而且代码简洁可读性强.前面我们学习了如何使用JDOM解析XML文件,本节介绍如何使用JDOM修改XML文件内容. 在这个教程中,我们准备 ...
- Java&Xml教程(三)使用DOM方式修改XML文件内容
DOM解析方式也可用于修改XML数据,我们可以使用它完成新增元素.删除元素.修改元素值.修改元素属性等操作. 我们的XML文件,内容如下: employee.xml <?xml version= ...
- C# 使用XDocument实现读取、添加,修改XML文件
新建xml文件编写如下内容做测试使用 需要引用:System.Xml.Linq 命名空间 一.读取XML 读取所有文档 筛选子元素为attribute1的元素,结果是IEumerable 通过Lin ...
- [libxml2]_[XML处理]_[使用libxml2的xpath特性修改xml文件内容]
场景: 1.在软件需要保存一些配置项时,使用数据库的话比较复杂,查看内容也不容易.纯文本文件对utf8字符支持也不好. 2.这时候使用xml是最佳选择,使用跨平台库libxml2. 3.基于xpath ...
- Dom4j 操作, 节点查找 添加 删除 修改 。。。xPath
转: Dom4j 操作, 节点查找 添加 删除 修改 ...xPath 2013年11月28日 10:48:59 今晚打酱油8 阅读数:8506更多 个人分类: JavaWeb 版权声明:本文为博 ...
- SQL语句添加删除修改字段及一些表与字段的基本操作
用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200)2.删除字段 ALTER TABLE table_NA ...
- Entity framework 绑定到Datagridview的添加删除修改
Entity framework 绑定到Datagridview的添加删除修改 using System; using System.Collections.Generic; using System ...
- JavaScript学习 - 基础(八) - DOM 节点 添加/删除/修改/属性值操作
html代码: <!--添加/删除/修改 --> <div id="a1"> <button id="a2" onclick=&q ...
- JTree 添加 , 删除, 修改
package com.swing.demo; import java.awt.BorderLayout; import java.awt.Container; import java.awt.eve ...
随机推荐
- Razor模板引擎(C#版)语法
1.简介: Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中. 基于服务器的代码可以在网页传送给浏览器时,创建动态 Web 内容.当一个网页被请 ...
- iOS开发-分页栏和选取器的使用
一.分页栏 创建一个新的项目,Subclass of的值选中UIViewController,然后在storyboard中删除根视图,在右下方拖出一个Tab Bar Controller 新增分页,只 ...
- java常见面试题
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分 ...
- 【07】为多态基类声明virtual析构方法
1.考虑下面的需要,需要一个工厂方法.工厂方法的规则是:在堆上分配一个子类对象,并返回父类指针.使用完毕,delete父类指针.如果父类的析构方法不是virtual,将直接调用父类的析构方法,导致局部 ...
- 理解C++ 宏
1.什么是宏,它解决什么问题? 宏的本质是文本替换,考虑下面的需求,程序中多次使用圆周率Pi,在每个地方都使用3.1415,显然很愚蠢.有没有好的办法呢?使用宏,如下: #define Pi 3.14 ...
- SQLSERVER中返回修改后的数据
在公司看到同事写了个SQL2005的新特性的文章,觉得很实用,在这里和大家分享下. 这种技术主要是用到了inserted和deleted虚拟表,这两张表相信大家都很熟悉.以前我们主要是在触发器中使用. ...
- android128 zhihuibeijing 科大讯飞 语音识别
- 科大讯飞 开放平台 http://open.voicecloud.cn/ package com.itheima.voicedemo; import android.app.Activity; i ...
- What Influences Method Call Performance in Java?--reference
reference from:https://www.voxxed.com/blog/2015/02/too-fast-too-megamorphic-what-influences-method-c ...
- 读取Log日志并打印到sdcard
@SuppressLint("SimpleDateFormat") private static SimpleDateFormat sdf = new SimpleDateForm ...
- logstash multiline 把文件处理为单个 event
需求 多个文本文件需要存到 ES 中去. 每一个文件存放为一个 doc. 每一个文件都是多行的,行数不定,且没有固定的内容格式. update time: Mon Jun :: CST package ...