1. package dom4j_write;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import org.dom4j.Attribute;
  5. import org.dom4j.Document;
  6. import org.dom4j.DocumentHelper;
  7. import org.dom4j.Element;
  8. import org.dom4j.io.OutputFormat;
  9. import org.dom4j.io.SAXReader;
  10. import org.dom4j.io.XMLWriter;
  11. /**
  12. * 修改xml文件:
  13. * 添加:文档 标签 属性
  14. * 修改:属性值 文本内容
  15. * 删除:标签 属性
  16. *
  17. * @author mzy
  18. *
  19. */
  20. public class Demo03 {
  21. public static void main(String[] args) throws Exception{
  22. /**
  23. * 添加:文档 标签 属性
  24. */
  25. // 1.1 添加空文档
  26. Document doc = DocumentHelper.createDocument();
  27. // -------------------------------
  28. // 真正的操作
  29. Element conListElem = doc.addElement("contact-list"); // 但是根标签不能添加多个
  30. // 一层一层的加
  31. Element conElem = conListElem.addElement("contact");
  32. conElem.addElement("name");
  33. // 添加属性
  34. conElem.addAttribute("id", "001");
  35. conElem.addAttribute("name", "mzy");
  36. // -------------------------------
  37. // 1.2 把文档写出到xml文件中
  38. FileOutputStream out = new FileOutputStream("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml");
  39. OutputFormat format = OutputFormat.createPrettyPrint();
  40. format.setEncoding("utf-8");
  41. XMLWriter writer = new XMLWriter(out, format);
  42. writer.write(doc);
  43. /**
  44. * 修改:属性值 文本内容
  45. * 将contact的属性值id=001,修改为id=003
  46. * 在name标签中添加名字
  47. */
  48. doc = new SAXReader().read(new File("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml"));
  49. // 修改属性值:method_1.先得到属性对象,再修改属性对象的值
  50. conElem = doc.getRootElement().element("contact");
  51. Attribute idAttr = conElem.attribute("id");
  52. idAttr.setValue("003");
  53. // 修改属性值:method_2.因为属性名不能重复,重复增加即覆盖
  54. // conElem.addAttribute("id", "003");
  55. // 修改文本
  56. Element nameElem = doc.getRootElement().element("contact").element("name");
  57. nameElem.setText("王五");
  58. // 把文档写出到xml文件中:必须重置IO流,不然会接着上次结束的位置写
  59. out = new FileOutputStream("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml");
  60. format = OutputFormat.createPrettyPrint();
  61. format.setEncoding("utf-8");
  62. /**
  63. * 删除:标签 属性内容
  64. * 将contact的属性值id=001,修改为id=003
  65. */
  66. // 1.1 删除标签
  67. conElem = doc.getRootElement().element("contact");
  68. // conElem.detach(); // 删除当前的标签
  69. // conElem.getParent().remove(conElem); // 获取父标签再删除子标签
  70. // 1.2 删除属性
  71. Attribute attr = doc.getRootElement().element("contact").attribute("id");
  72. attr.detach();
  73. writer = new XMLWriter(out, format);
  74. writer.write(doc);
  75. }
  76. }

xml格式如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <contact-list>
  3. <contact name="eric">
  4. <name>王五</name>
  5. </contact>
  6. </contact-list>

使用dom4工具:增删改xml文件(七)的更多相关文章

  1. 60分钟课程: 用egg.js实现增删改查,文件上传和restfulApi, webpack react es6 (一)

    今天开始我将写nodejs框架egg.js, react 实现的增删改查,文件上传等常用的b/s场景,这个将分3部分来写. 会让你在60分钟内快速 入口并应用~  你应该用es6, node,或是ph ...

  2. IDEA 开发工具在POM.XML文件中增加依赖

    在POM.XML 中使用快捷键 ALT+INSERT 选择第一个,输入关键字即可 选择版本,确认,ok

  3. MYSQL 之 JDBC(九):增删改查(七)DAO的补充和重构

    DAO重构后的代码 package com.litian.jdbc; import org.apache.commons.beanutils.BeanUtils; import java.sql.*; ...

  4. XML为数据库进行增删改查(实例)

    //增删改查文件 package xml2; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.Fi ...

  5. iOS开发-plist文件增删改查

    plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件.扩展名为.plis ...

  6. 使用idea对XML的增删改查

    XML:是一种可扩展标记性的语言,与java语言无关,它可以自定义标签. 1.首先需要到导入Dom4j架包,与自己所时候的ide关联 2.编写自己的xml文件,入上图所示(里面的所有元素及元素中的属性 ...

  7. Linux文件增删改

    Linux目录/文件增删改 创建文件 (1) # touch  <文件名称> (2) 花括号展开 touch /root/{1,3,9}.txt touch /root/{0..100}. ...

  8. node 通过mongoose实现 mongodb的增删改

    node 通过mongoose实现 mongodb的增删改   新建文件test.js 内容如下:   var mongoose = require('mongoose') , Schema = mo ...

  9. day38 mycql 初识概念,库(增删改查),表(增删改)以及表字段(增删改查),插入更新操作

    在Navicat中把已经生成的表逆向成模型 数据库上,右键-逆向数据库到模型 ego笔记: 增删改查 文件夹(库) 增 create database day43 charset utf8; 改 al ...

随机推荐

  1. DWA局部路径规划算法论文阅读:The Dynamic Window Approach to Collision Avoidance。

    DWA(动态窗口)算法是用于局部路径规划的算法,已经在ROS中实现,在move_base堆栈中:http://wiki.ros.org/dwa_local_planner DWA算法第一次提出应该是1 ...

  2. YARN调度器(Scheduler)详解

    理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源.在Yarn中,负责给应用分配资 ...

  3. P3643 [APIO2016]划艇

    P3643 [APIO2016]划艇 题意 一个合法序列可表示为一个长度为 \(n\) 的序列,其中第 \(i\) 个数可以为 0 或 \([l_i,r_i]\) 中一个整数,且满足所有不为零的数组成 ...

  4. Linux + NodeJS 常用命令

    Linux系统常用命令 1.su 由当前用户切换至root用户: 2. su username 切换至某一用户: 3.chmod u+w /etc/sudoers 为/etc/sudoers文件添加写 ...

  5. Python脚本:爬取天气数据并发邮件给心爱的Ta

    第一部分:爬取天气数据 # 在函数调用 get_weather(url = 'https://www.tianqi.com/foshan') 的 url中更改城市,foshan为佛山市 1 impor ...

  6. 深入刨析tomcat 之---第21篇 tomcat 对jsp页面支持的实现原理

    writedby 张艳涛 web技术,以前的动态网页技术多是jsp页面,比如点击一个菜单目录,直接访问了一个LRJSDetailInput.jsp页面,这个页面 有<html><bo ...

  7. 创建函数,传递一个数字n,返回斐波那契数列的第n的值。

    斐波那契数列 第1项和第2项的值是1,从第3项开始,每项的值是前两项相加的和 1   1   2    3    5    8    13    21...... 法1: function fn(n) ...

  8. ERROR: database "db" is being accessed by other users

    执行DROP DATABASE testdb;的时候提示: ERROR: database "testdb" is being accessed by other users DE ...

  9. MarkDown语法(Typora软件为例)

    Hello    !我又来了 这篇文章主要给大家讲一下MarkDown的一些基础语法,MarkDown语法是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML( ...

  10. Java面向对象03——类与对象的创建

    类的创建与初始化对象 age: 以类的方式组织代码,以对象的组织(封装)数据  package oop.demon01.demon02; ​ // 学生类(抽象模板) public class Stu ...