前言:

上一篇博客我开始了用Dom4j对XML进行了读操作,这篇博客主要是进行对XML的写操作
只涉及基础的内容,只要有javase基础和eclipse的使用 就可以完成,
往后的内容包括  “框架”  我都还没学到,所以本文中的内容也都是局限于基础部分

有兴趣的可以参考Dom4j工具--XML的DOM解析(上)--读操作
也可以参考DOM4J官网
还可以查看DOM4J API

目录:

1. 如何写内容到XML
2. 增:文档,标签,属性,文本内容
3. 改:属性值,文本
4. 删:标签,属性

现在开始正文。

如何写内容到XML:

这一步是所有操作的前提,也是入门的必要操作

简单举个栗子:
实现对一个xml文档的粘贴复制功能

    @Testpublic void test2() throws Exception {// 1.读取xml文档,返回Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File(".\\src\\day33\\ss.xml"));FileOutputStream fileOutputStream=new FileOutputStream("D:\\xx.xml");OutputFormat outputFormat1=OutputFormat.createCompactFormat();OutputFormat outputFormat2=OutputFormat.createPrettyPrint();outputFormat2.setEncoding("UTF-8");XMLWriter xmlWriter=new XMLWriter(fileOutputStream,outputFormat2);xmlWriter.write(doc);xmlWriter.close();}

结果:
createCompactFormat():

<?xml version="1.0" encoding="UTF-8"?>
<constant><cons><name>hello1</name></cons><name>hello2</name><cons><name>hello3</name></cons></constant>

createPrettyPrint():

<?xml version="1.0" encoding="UTF-8"?><constant> <cons> <name>hello1</name> </cons>  <name>hello2</name>  <cons> <name>hello3</name> </cons>
</constant>

注意:

  1. @Test可以忽略 因为涉及到注解和单元测试,想了解单元测试的可以参考一下这篇:
    单元测试--JUnit4了解一下(eclipse环境)
  2. XMLWriter导入的时候注意头文件别错了 是:import org.dom4j.io.XMLWriter;
  3. 这里使用FileOutputStream 而不是Writer字符流 因为防止考虑编码
  4. 记得最后要关闭流。
  5. createCompactFormat():紧凑的结构 去除空格和换行,项目上线 因为xml更小
  6. createPrettyPrint(): 漂亮的结构 有空格和换行,开发调试
    outputFormat2.setEncoding("UTF-8");是指定保存的编码格式为UTF-8

修改:
outputFormat2.setEncoding("GBK");内容是中文的话 就会出现乱码
outputFormat2.setEncoding会使得 保存的编码格式和文档声明一致 即


<?xml version="1.0" encoding="GBK"?>

增:文档,标签,属性,文本内容:

DocumentHelper.createDocument() 增加文档
addElement("名称") 增加标签
addAttribute("名称",“值”) 增加属性
addText(“内容”) 增加文本内容

源代码:

@Testpublic void test2() throws Exception {FileOutputStream fileOutputStream=new FileOutputStream("D:\\xx.xml");Document doc=DocumentHelper.createDocument();//创建文档Element element=doc.addElement("age1");      //创建标签element.addAttribute("id", "12");            //创建属性element.addText("Text");                     //创建文本文件OutputFormat outputFormat2=OutputFormat.createPrettyPrint();outputFormat2.setEncoding("UTF-8");XMLWriter xmlWriter=new XMLWriter(fileOutputStream,outputFormat2);xmlWriter.write(doc);xmlWriter.close();}

注意:
Element element=doc.addElement("age1");不能重复插入,因为只有一个根标签

修改:属性值,文本:

Attribute.setValue("值")  修改属性值
Element.addAtribute("同名的属性名","值")  修改同名的属性值
Element.setText("内容")  修改文本内容
    @Testpublic void test2() throws Exception {// 1.读取xml文档,返回Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File(".\\src\\day33\\ss.xml"));FileOutputStream fileOutputStream=new FileOutputStream("D:\\xx.xml");//获取标签对象Element element=doc.getRootElement();Element elementSon=element.element("cons");//修改属性值elementSon.addAttribute("id", "12");            // 通过增加同名属性的方法,修改属性值Attribute attribute=elementSon.attribute("id"); // 获取属性对象 修改属性值值attribute.setValue("13");;elementSon.setText("修改1");                     //修改文本内容OutputFormat outputFormat2=OutputFormat.createPrettyPrint();outputFormat2.setEncoding("UTF-8");XMLWriter xmlWriter=new XMLWriter(fileOutputStream,outputFormat2);xmlWriter.write(doc);xmlWriter.close();}

注意:cons标签下先文本后name标签,如果修改cons文本内容后 ,文本会下移到name标签下。似乎没啥大影响

删:标签,属性:

Element.detach();  删除标签
Attribute.detach();  删除属性

源代码:

@Testpublic void test2() throws Exception {// 1.读取xml文档,返回Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File(".\\src\\day33\\ss.xml"));FileOutputStream fileOutputStream=new FileOutputStream("D:\\xx.xml");//获取标签对象Element element=doc.getRootElement();Element elementSon=element.element("cons");//获取到cons下第一个标签节点并且删除elementSon.elements().get(0).detach();//获取到cons标签的属性为id的属性对象,然后删除Attribute idAttribute=elementSon.attribute("id");idAttribute.detach();OutputFormat outputFormat2=OutputFormat.createPrettyPrint();outputFormat2.setEncoding("UTF-8");XMLWriter xmlWriter=new XMLWriter(fileOutputStream,outputFormat2);xmlWriter.write(doc);xmlWriter.close();}

Dom4j工具--XML的DOM解析(下)--写操作相关推荐

  1. (五)DOM4j进行XML文件的解析及生成

    DOM4j本身还是需要使用SAX建立解析器,然后通过文档依次找到根节点,再通过根节点查找每一个节点的内容. 1.写操作 import java.io.File; import java.io.File ...

  2. 利用jaxp对xml进行dom解析

    1 <?xml version="1.0" encoding="UTF-8"?> 2 <书架> 3 <书> 4 <书名 ...

  3. python处理xml文件_Python处理XML之DOM解析

    print "===========DOM方式解析XML文档=======================" ''' DOM 将XML文档定义为如下格式: 根节点 || 元素节点= ...

  4. Python Xml dom解析 输出json操作

    将region.xml文件解析为  列表  json格式 以下为xml文件部分内容: 1.DOMTree = xml.dom.minidom.parse('region.xml')       (获取 ...

  5. (二)使用Dom4j对XML文件进行解析

    目录 1.XML解析概念 2.Dom4j解析过程 1.XML解析概念 XML解析技术:   HTML和XML都是标记型文档,可以使用W3C组织制定的DOM技术来解析.(DOM把所有标签表示为对象) d ...

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

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

  7. XML解析(二),DOM解析XML

    转载自   XML解析(二),DOM解析XML 上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这[XML解析(一)]SAX解析XML ,这 ...

  8. Android程序解析xml至文档中,Android开发之DOM解析xml文件的方法

    本文实例讲述了Android中DOM解析xml文件的方法.分享给大家供大家参考,具体如下: 一.在assets文件中写xml文件 李明 30 李向梅 25 二.在service中写一个DOM解析的操作 ...

  9. Java开发笔记XML报文的解析

    Java开发笔记XML报文的解析 前言 正文 代码示例 结语 前言 项目任务里需要解析xml报文. 于是开始着手学习相关知识,在查看了多篇博文后找到了一篇不错的,讲的很实用. 转载来源:Java开发笔 ...

最新文章

  1. TensorFlow官方课程开启,机器学习上车吧
  2. 简单封装浏览器 cookie 工具类
  3. 10种JavaScript开发者必备的VS Code插件
  4. 近世代数--置换群--置换permutation分解成什么?置换的级如何计算?
  5. c语言语法分析源程序,深入浅出编译原理-5-一个简单语法分析器的C语言实现
  6. iOS 10 消息推送(UserNotifications)秘籍总结(二)
  7. java能看懂代码不会写_为什么很多学习Java的人能看懂代码,但就是不会写!
  8. CCF201512-2 消除类游戏
  9. 程序员如何认识更多异性_28岁女生国庆和年薪50万程序员相亲,看到对方工作状态后:后悔了......
  10. html文字冒险游戏,小说新类型介绍之文字冒险游戏
  11. 对讲机扫盲的基本常识
  12. python共享单车案例分析_文科生学Python系列20:共享单车案例2(相关性分析)
  13. mapreduce推测执行算法及原理
  14. android scroller,高级UI第四十四篇:Android Scroller详解
  15. android 网络运营商名称显示规则(锁屏界面,下拉列表)
  16. 强化学习初探 DQN+PyTorch+gym倒立摆登山车
  17. 基于海量微博数据的仓库构建与舆情热点挖掘项目总结
  18. R语言之R程序(老虎机)
  19. android 输入法如何启动流程_Android输入法显示流程
  20. .tga图片的文件格式分析

热门文章

  1. SGCheck:一个实验堆栈和全局数组溢出检测器
  2. 谈谈我国电子商务中的安全问题
  3. USACO-Section2.1 The Castle (深度优先搜索)
  4. 从零开始学PowerShell(9)创建PowerShell对象
  5. matlab实现层次分析法
  6. [ 转载 ] Java基础14--创建线程的两个方法
  7. C#开发微信门户及应用(32)--微信支付接入和API封装使用
  8. /var/spool/postfix/maildrop小文件太多造成inode索引使用完解决
  9. 格密码教程(五):Babai‘s algorithm和求解apprCVP算法
  10. 眼花缭乱的数据库,怎样选择?给你这个书单,想学哪个学哪个