dom4j工具对XML写入修改删除操作实现
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; public class Demo1 extends Thread{ public static void main(String[] args) throws DocumentException, IOException {
//一、读取或创建一个Document对象
Document doc = new SAXReader().read(new File("./src/contact.xml")); //二、修改Document对象内容 //三、把修改后的Document对象写出到xml文档中
//指定文件输出的位置
FileOutputStream out = new FileOutputStream("d:/contact.xml");
//1.创建写出对象
XMLWriter writer = new XMLWriter(out); //2.写出对象
writer.write(doc);
//3.关闭流
writer.close(); } }
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; public class Demo1 {
public static void main(String[] args) throws DocumentException, IOException {
Document doc = new SAXReader().read(new File("./src/contact.xml"));
//指定文件输出的位置
FileOutputStream out = new FileOutputStream("d:/contact.xml");
/**
* 1.指定写出的格式
*/
OutputFormat format = OutputFormat.createCompactFormat(); //紧凑的格式.去除空格换行.项目上线的时候
//OutputFormat format = OutputFormat.createPrettyPrint(); //漂亮的格式.有空格和换行.开发调试的时候
/**
* 2.指定生成的xml文档的编码
* 同时影响了xml文档保存时的编码 和 xml文档声明的encoding的编码(xml解析时的编码)
* 结论: 使用该方法生成的xml文档避免中文乱码问题。
*/
format.setEncoding("utf-8");
//1.创建写出对象
XMLWriter writer = new XMLWriter(out,format);
//2.写出对象
writer.write(doc);
//3.关闭流
writer.close();
} }
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.List; import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
/**
* 完整读取xml文档内容 *
*/
public class Demo { /**
* 增加:文档,标签 ,属性
*/
@Test
public void test1() throws Exception{
/**
* 1.创建文档
*/
Document doc = DocumentHelper.createDocument();
/**
* 2.增加标签
*/
Element rootElem = doc.addElement("contactList");
//doc.addElement("contactList");
Element contactElem = rootElem.addElement("contact");
contactElem.addElement("name");
/**
* 3.增加属性
*/
contactElem.addAttribute("id", "001");
contactElem.addAttribute("name", "eric"); //把修改后的Document对象写出到xml文档中
FileOutputStream out = new FileOutputStream("d:/contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
} /**
* 修改:属性值,文本
* @throws Exception
*/
@Test
public void test2() throws Exception{
Document doc = new SAXReader().read(new File("./src/contact.xml")); /**
* 方案一: 修改属性值 1.得到标签对象 2.得到属性对象 3.修改属性值
*/
//1.1 得到标签对象
/*
Element contactElem = doc.getRootElement().element("contact");
//1.2 得到属性对象
Attribute idAttr = contactElem.attribute("id");
//1.3 修改属性值
idAttr.setValue("003");
*/
/**
* 方案二: 修改属性值
*/
//1.1 得到标签对象
/*
Element contactElem = doc.getRootElement().element("contact");
//1.2 通过增加同名属性的方法,修改属性值
contactElem.addAttribute("id", "004");
*/ /**
* 修改文本 1.得到标签对象 2.修改文本
*/
Element nameElem = doc.getRootElement().
element("contact").element("name");
nameElem.setText("李四"); FileOutputStream out = new FileOutputStream("d:/contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
} /**
* 删除:标签,属性
* @throws Exception
*/
@Test
public void test3() throws Exception{
Document doc = new SAXReader().read(new File("./src/contact.xml")); /**
* 1.删除标签 1.1 得到标签对象 1.2 删除标签对象
*/
// 1.1 得到标签对象
/*
Element ageElem = doc.getRootElement().element("contact")
.element("age"); //1.2 删除标签对象
ageElem.detach();
//ageElem.getParent().remove(ageElem);
*/
/**
* 2.删除属性 2.1得到属性对象 2.2 删除属性
*/
//2.1得到属性对象
//得到第二个contact标签
Element contactElem = (Element)doc.getRootElement().
elements().get(1);
//2.2 得到属性对象
Attribute idAttr = contactElem.attribute("id");
//2.3 删除属性
idAttr.detach();
//idAttr.getParent().remove(idAttr); FileOutputStream out = new FileOutputStream("d:/contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
writer.write(doc);
writer.close();
}
}
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator; import org.dom4j.Document;
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.Test; /**
* 用dom4j的api来生成以下的xml文件
<Students>
<Student id="1">
<name>张三</name>
<gender>男</gender>
<grade>土木</grade>
<address>广州</address>
</Student>
<Student id="2">
<name>李四</name>
<gender>女</gender>
<grade>计算机</grade>
<address>广州</address>
</Student>
</Students> 2.修改id为2的学生的姓名,改为“王丽” 3.删除id为2的学生 *
*/
public class Demo { /**
* 1.生成指定xml文档
* @throws Exception
*/
@Test
public void test1() throws Exception{
//1.内存创建xml文档
Document doc = DocumentHelper.createDocument(); //2.写入内容
Element rootElem = doc.addElement("Students"); //2.1 增加标签
Element studentElem1 = rootElem.addElement("Student");
//2.2 增加属性
studentElem1.addAttribute("id", "1");
//2.3 增加标签,同时设置文本
studentElem1.addElement("name").setText("张三");
studentElem1.addElement("gender").setText("男");
studentElem1.addElement("grade").setText("土木");
studentElem1.addElement("address").setText("广州"); //2.1 增加标签
Element studentElem2 = rootElem.addElement("Student");
//2.2 增加属性
studentElem2.addAttribute("id", "2");
//2.3 增加标签,同时设置文本
studentElem2.addElement("name").setText("李四");
studentElem2.addElement("gender").setText("女");
studentElem2.addElement("grade").setText("计算机");
studentElem2.addElement("address").setText("广州"); //3.内容写出到xml文件
//3.1 输出位置
FileOutputStream out = new FileOutputStream("d:/student.xml");
//3.2 指定格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置编码
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
//3.3 写出内容
writer.write(doc);
//3.4关闭资源
writer.close(); } /**
* 2.修改id为2的学生姓名
* @throws Exception
*/
@Test
public void test2() throws Exception{
//1.查询到id为2的学生
Document doc = new SAXReader().read(new File("d:/student.xml"));
//1.1 找到所有的Student标签
Iterator<Element> it = doc.getRootElement().elementIterator("Student");
while(it.hasNext()){
Element stuElem = it.next();
//1.2 查询id为id的学生标签
if(stuElem.attributeValue("id").equals("2")){
stuElem.element("name").setText("王丽");
break;
}
}
//3.1 输出位置
FileOutputStream out = new FileOutputStream("d:/student.xml");
//3.2 指定格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置编码
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
//3.3 写出内容
writer.write(doc);
//3.4关闭资源
writer.close();
} /**
* 3.删除id为2的学生
* @throws Exception
*/
@Test
public void test3() throws Exception{
//1.查询到id为2的学生
Document doc = new SAXReader().read(new File("d:/student.xml"));
//1.1 找到所有的Student标签
Iterator<Element> it = doc.getRootElement().elementIterator("Student");
while(it.hasNext()){
Element stuElem = it.next();
//1.2 查询id为id的学生标签
if(stuElem.attributeValue("id").equals("2")){
//1.3 删除该学生标签
stuElem.detach();
break;
}
}
//3.1 输出位置
FileOutputStream out = new FileOutputStream("d:/student.xml");
//3.2 指定格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置编码
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out,format);
//3.3 写出内容
writer.write(doc);
//3.4关闭资源
writer.close();
}
}
dom4j工具对XML写入修改删除操作实现的更多相关文章
- 利用Solr的post工具对核心my_core执行删除操作
<delete> <query>*:*</query> </delete> 将上面代码保存到delete_all.xml文件中,并使用Solr的post ...
- Hadoop使用Java进行文件修改删除操作
Hadoop使用Java进行文件修改删除操作 学习了:http://blog.csdn.net/menghuannvxia/article/details/44651061 学习了:http://bl ...
- 使用dom4j工具:xml总结
1.IO流:BufferedReader字符流readLine();截取 不可行!!!2.XML解析:dom4j查:标签:element("name")elements(" ...
- Oracle-表的字段增加修改删除操作
表结构修改 ALTER TABLE SCOTT.TEST RENAME TO TEST1--修改表名 ALTER TABLE SCOTT.TEST RENAME COLUMN NAME TO NAME ...
- EF Core扩展工具记录 批量操作 记录修改删除历史 动态linq
Microsoft.EntityFrameworkCore.UnitOfWork Microsoft.EntityFrameworkCore的插件,用于支持存储库,工作单元模式以及支持分布式事务 ...
- 使用dom4j工具:读取xml(一)
package dom4j_read; import java.io.File; import org.dom4j.Document; import org.dom4j.io.SAXReader; / ...
- php对xml文件进行CURD操作
XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 【JAVA与DOM4J实现对XML文档的CRUD操作】
一.简介 1.网上下载DOM4J 1.6.1压缩包,解压开之后,发现几个目录和一个jar文件,jar文件是必须的文件其它目录: docs目录:帮助文档的目录,单击index.html: Quick s ...
随机推荐
- linux中安装jdk+jmeter-
--------------linux中安装jdk+jmeter-------------------- 一.安装JDK7.0版本 .先卸载服务器自带的jdk软件包 # java -version # ...
- makefile学习之函数
GNU make支持内置函数以及用户自定义函数,下面结合例子简单介绍一下. gnu make版本: 4.1 一.用户自定义函数 格式: $(call macro-name{, param1 ···}) ...
- Pythonic定义
Pythonic定义 Python最常用的编码风格还是PEP8,详见:http://jython.cn/dev/peps/pep-0008/ Pythonic确实很难定义,先简单引用下<Pyth ...
- 《python解释器源码剖析》第1章--python对象初探
1.0 序 对象是python中最核心的一个概念,在python的世界中,一切都是对象,整数.字符串.甚至类型.整数类型.字符串类型,都是对象.换句话说,python中面向对象的理念观测的非常彻底,面 ...
- Redis08-击穿&穿透&雪崩&spring data redis
一.常见概念 击穿: 概念:redis作为缓存,设置了key的过期时间,key在过期的时候刚好出现并发访问,直接击穿redis,访问数据库 解决方案:使用setnx() ->相当于一把锁,设置的 ...
- 网络协议相关面试问题-http协议相关面试问题
HTTP协议简介: 一些基本概念: 协议:指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则. HTTP协议:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML ...
- 数据驱动——ddt
1: pip3 install ddt 2: @ddt 装饰 @data((2,3),(4,5)) 支持列表,元祖,字典 @unpack 解压数据 1 import unittest 2 from ...
- windows通讯之evpp
- JavaScript设计模式与开发实践(二)——apply&&call
call和apply的用途 改变this指向 先看个例子: var obj1 = { name: 'sven' }; var obj2 = { name: 'anne' }; window.name ...
- PHP下查询游戏《Minecraft》多人游戏 服务器的人数。
废话不多说,直接上图: 作为一个优雅的Minecraft服务器,肯定需要官网的嗯. 很多服务器的官网都有显示当前服务器在线人数,延迟,每一个子服在线人数,甚至出了个流量图. 我们不搞花里胡哨的查询人数 ...