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、思维导图

XML解析-Dom4j的DOM解析方式更新XML相关推荐

  1. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  2. 使用JAXP对XML文档进行DOM解析

    一.XML解析方式分为两种:dom和sax dom:(Document Object Model,即文档对象模型)是W3C组织推荐的解析XML的一种方式. sax:(Simple API for XM ...

  3. C# Html解析之AngleSharp_C#Dom解析(强烈推荐)

    C# Html解析之AngleSharp_C#Dom解析 一.AngleSharp简介 AngleSharp 是一个 .NET 的 HTML 解析器库.支持输出 Javascript.Linq 语法. ...

  4. 使用JAXP对xml文档进行DOM解析基础

    XML解析方式分为两种:dom和sax         dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式.        sax ...

  5. JAXP对XML文档进行DOM解析实现增删改

    上一节用JAXP对xml文档解析读取了其中的数据点击查看上一节内容,现在实行xml文档的增删改: xml文档: <?xml version="1.0" encoding=&q ...

  6. python使用xml布局界面_Python:使用ElementTree更新XML文件,同时尽可能地保留布局...

    基于XML的解决方案是为ElementTree编写一个helper类,该类:在解析为ElementTree之前在抓取XML声明行在写入时,如果不同时写入编码属性(我检查了源代码),则无法写入XML声明 ...

  7. Spring→事务、隔离级别、事务传播行为、编程式事务控制、XML配置声明式事务(原始方式)、XML配置声明式事务(基于tx/aop)、@注解配置声明式事务、优势总结

    事务 Spring事务管理 不考虑隔离引发问题 隔离级别 事务传播行为 演示环境搭建 编程式事务控制 XML配置声明式事务(原始方式) XML配置声明式事务(基于tx/aop) @注解配置声明式事务 ...

  8. load xml error什么意思_XML文件解析实践(DOM解析)

    昨天完成了基于DOM的XML文件解析类,今天赶紧实践了一下,不得不说,实践中的坑还是很多的. 本来这个项目就是为了规范各个服务在使用MySQL数据库时候的配置项,由于之前我接触的都是Java服务,对于 ...

  9. c++解析xml文件_XML文件解析实践(DOM解析)

    昨天完成了基于DOM的XML文件解析类,今天赶紧实践了一下,不得不说,实践中的坑还是很多的. 本来这个项目就是为了规范各个服务在使用MySQL数据库时候的配置项,由于之前我接触的都是Java服务,对于 ...

最新文章

  1. KDD Cup 2020 推荐系统赛道:数据分析
  2. scau 1142 巡逻的士兵(分治)
  3. php百度自动推送代码,怎么设置百度自动推送代码安装教程-百度自动推送好处解析...
  4. Metrics.NET源码阅读笔记
  5. 成功解决SQL server服务,远程过程调用失败
  6. 网易内推java 面试_网易内推面试
  7. mybatis sql打印输出位置
  8. 写微博picgp图床安装与问题解决(看这一篇就可以了)
  9. 从开源自治到微服务云化,用这剂良药提升微服务幸福感
  10. Python isinstance函数 - Python零基础入门教程
  11. 信息学奥赛一本通 1149:最长单词2 | OpenJudge NOI 1.13 16
  12. c#winform演练 ktv项目 在dataGridView中显示歌曲列表
  13. JSP页面元素-新手向
  14. 20165305 第十周课下补做
  15. Paxos—以选美比赛为例PPT
  16. hdmi中深度色彩像素打包
  17. vue使用three.js加载.FBX模型文件
  18. 【算法】【链表模块】删除链表的中间节点或a/b节点
  19. 第十四届蓝桥杯要开始了(2022年)
  20. audio驱动之codec和codec_dai

热门文章

  1. 当使用easyui时,jquery的设置disabled属性方法失效
  2. 服务器oracle优化,oracle服务器配置及优化
  3. java set方法赋值_java方面:private属性,没有set方法,只有get方法,如何给这个属性赋值?...
  4. mysql 范式化_MySQL-范式和反范式
  5. erwin 不能输入中文_国产开源建模软件PDMan与国外商业建模软件ERwin的主要功能比较...
  6. android 前置摄像头预览时 镜像翻转_全面屏时代,原来手机前置摄像头都隐藏着一些缺点,你发现了吗?...
  7. NM的完整形式是什么?
  8. c语言 nan 常量_NaN32常量(Julia)
  9. 一串字符串转换为ascii_将ASCII字符串(char [])转换为C中的BYTE数组
  10. nodemailer使用_如何使用Nodemailer使用HTML作为内容发送电子邮件 Node.js