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内容
 - * 增加:文档,标签 ,属性
 - * 修改:属性值,文本
 - * 删除:标签,属性
 - *
 - *
 - */
 - public class Demo03
 - {
 - /**
 - * 增加:文档,标签 ,属性
 - */
 - @Test
 - public 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("执行结束!");
 - }
 - /**
 - * 修改:属性值,文本
 - */
 - @Test
 - public 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("执行结束!");
 - }
 - /**
 - * 删除:标签,属性
 - */
 - @Test
 - public 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、思维导图

XML解析-Dom4j的DOM解析方式更新XML的更多相关文章
- 2.1 使用JAXP 对 xml文档进行DOM解析
		
//使用 jaxp 对xml文档进行dom解析 public class Demo2 { //必要步骤 @Test public void test() throws Exception { //1. ...
 - 使用JAXP对xml文档进行DOM解析基础
		
XML解析方式分为两种:dom和sax dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式. sax: ...
 - xml解析-jaxp之dom解析
		
package day06_parser.dom; /** * xml的解析技术:JAXP是Java API for XML Processing的英文字头缩写, * 中文含义是:用于XML文档处理的 ...
 - 解析XML文件之使用DOM解析器
		
在前面的文章中.介绍了使用SAX解析器对XML文件进行解析.SAX解析器的长处就是占用内存小.这篇文章主要介绍使用DOM解析器对XML文件进行解析. DOM解析器的长处可能是理解起来比較的直观,当然, ...
 - Android笔记(四十五) Android中的数据存储——XML(一)DOM解析器
		
DOM解析XML在j2ee开发中比较常见,在Dom解析的过程中,是先把dom全部文件读入到内存中,然后使用dom的api遍历所有数据,检索想要的数据,这种方式显然是一种比较消耗内存的方式,对于像手机这 ...
 - 使用JAXP对XML文档进行DOM解析
		
import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers. ...
 - javaweb学习总结十一(JAXP对XML文档进行DOM解析)
		
一:将内存中写好的xml文件读取到硬盘上 二:DOM方式对xml文件进行增删改查 1:添加节点(默认是在最后的子节点后面添加) @Test // 向元素中添加节点<version>1.0& ...
 - [ java 工具类] xml字符串解析成Map(DOM解析)
		
package com.tencent.jungle.wechat.util; import com.google.inject.Singleton; import org.w3c.dom.Docum ...
 - java dom xml解析和windows dom解析的差别
		
1.java dom 子节点包括空节点. 2.java dom 文档节点值也是其的子节点. 而windows dom(mshtml.dll)子节点不包括空节点,而节点值也不是以子节点的方式来对待的.
 
随机推荐
- Docker学习总结(18)——阿里超大规模Docker化之路
			
12月6-7日,由阿里巴巴集团.阿里巴巴技术发展部.阿里云云栖社区联合主办,以"2016双11技术创新"为主题的阿里巴巴技术论坛上,阿里巴巴研究员林昊分享了阿里超大规模Docker ...
 - 关于ant引用android第三方工程打包的问题, invalid resource directory name: F:\workspace\Zlib\bin\res/crunch
			
转载自 https://zhidao.baidu.com/question/200134399463655885.html invalid resource directory name: F:\wo ...
 - Dubbo 是一个分布式服务框架
			
Dubbo 是一个分布式服务框架-----http://www.cnblogs.com/chanshuyi/p/5144288.html
 - POJ 3270 置换群问题
			
题目大意是: 每头牛都有一个对应的值a[i],现在给定一个初始的牛的序列,希望通过两两交换,能够使这些牛按值升序排列,每次交换都会耗费一个 a[i]+a[j] 希望耗费最小,求出这个最小耗费 个人觉得 ...
 - [bzoj1070][SCOI2007]修车[ 网络流]
			
把每个工人拆成N个点.记为A[i,j]表示第i个工人修倒数第j辆车.每个车跟所有N*M个工人拆出的点连边.流量为1,费用为$time[i,j]*k$.源和每辆车连边,N*M个点和汇连边,流量都为1,费 ...
 - M - 小希的迷宫 并查集
			
上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...
 - 洛谷—— P2047 社交网络
			
P2047 社交网络 题目描述 在社交网络(social network)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有n个人,人与人之间有不同程度的关系. ...
 - 在Ubuntu平台上创建Cordova Camera HTML5应用
			
在这篇文章中,我们将具体介绍怎样使用Cordova Camera HTML5 应用.很多其它关于Cordova的开发指南,开发人员能够參考文章"the Cordova Guide" ...
 - XCode 7 高速切换代码窗体和文档窗体
			
XCode 7 高速切换代码窗体和文档窗体 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 ...
 - php訪问控制
			
訪问控制通过keywordpublic,protected和private来实现. 被定义为公有的类成员能够在不论什么地方被訪问.被定义为受保护的类成员则能够被其自身以及其子类和父类訪问.被定义为私有 ...