package dom4j_write;

import java.io.File;
import java.io.FileOutputStream; import org.dom4j.Attribute;
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; /**
* 修改xml文件:
* 添加:文档 标签 属性
* 修改:属性值 文本内容
* 删除:标签 属性
*
* @author mzy
*
*/
public class Demo03 {
public static void main(String[] args) throws Exception{
/**
* 添加:文档 标签 属性
*/
// 1.1 添加空文档
Document doc = DocumentHelper.createDocument(); // ------------------------------- // 真正的操作
Element conListElem = doc.addElement("contact-list"); // 但是根标签不能添加多个
// 一层一层的加
Element conElem = conListElem.addElement("contact"); conElem.addElement("name"); // 添加属性
conElem.addAttribute("id", "001");
conElem.addAttribute("name", "mzy");
// ------------------------------- // 1.2 把文档写出到xml文件中
FileOutputStream out = new FileOutputStream("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8"); XMLWriter writer = new XMLWriter(out, format);
writer.write(doc); /**
* 修改:属性值 文本内容
* 将contact的属性值id=001,修改为id=003
* 在name标签中添加名字
*/
doc = new SAXReader().read(new File("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml")); // 修改属性值:method_1.先得到属性对象,再修改属性对象的值
conElem = doc.getRootElement().element("contact");
Attribute idAttr = conElem.attribute("id");
idAttr.setValue("003"); // 修改属性值:method_2.因为属性名不能重复,重复增加即覆盖
// conElem.addAttribute("id", "003"); // 修改文本
Element nameElem = doc.getRootElement().element("contact").element("name");
nameElem.setText("王五"); // 把文档写出到xml文件中:必须重置IO流,不然会接着上次结束的位置写
out = new FileOutputStream("E:/user/eclipse_workStation/XML/src/dom4j_write/target03.xml");
format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8"); /**
* 删除:标签 属性内容
* 将contact的属性值id=001,修改为id=003
*/
// 1.1 删除标签
conElem = doc.getRootElement().element("contact");
// conElem.detach(); // 删除当前的标签
// conElem.getParent().remove(conElem); // 获取父标签再删除子标签 // 1.2 删除属性
Attribute attr = doc.getRootElement().element("contact").attribute("id");
attr.detach(); writer = new XMLWriter(out, format);
writer.write(doc); }
}

xml格式如下:

<?xml version="1.0" encoding="utf-8"?>

<contact-list>
<contact name="eric">
<name>王五</name>
</contact>
</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. facade层,service 层,domain层,dao 层设计

    转自http://fei-6666.iteye.com/blog/446247,记录下来 一,Service->DAO,只能在Service中注入DAO. 二,DAO只能操作但表数据,跨表操作放 ...

  2. this的四种用法!

    经常会有人问到this的用法,其实简单来说,this有四种应用场景,分别是在构造函数上.对象属性中.普通函数中.call和apply方法中. 首先我们来看第一种:在构造函数中的用法 第二种是在在对象属 ...

  3. 简单快速安装Apache+PHP+MySql服务环境(三)—— 下载安装phpmyadmin

    为了方便在Linux上操作mysql数据库,打算安装一个phpmyadmin,不过在下载安装的过程中出现了一些坑,特此记录. 1. 在官网上下载phpmyadmin https://files.php ...

  4. POJ1417 True Liars 题解

    通过读题,容易发现,当回答为yes时 \(x,y\) 必属于同类,当回答为no时二者必为异类(并且当 \(x=y\) 时,回答必为yes,不过这题不用这个性质). 于是先按关系维护连通块,然后求出每个 ...

  5. 【排序+模拟】谁拿了最多奖学金 luogu-1051

    题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 院士奖学金,每人$ 8000 $元,期末平均成绩高于\(80\)分(\(>80\)),并且在本 ...

  6. informix数据库分页

    需求描述 当查询结果返回大量数据情况下,比如报表查询.需要按一定条件排序提供分页呈现数据. INFORMIX实现方案:Informix 数据库提供了非常便捷.高效的SQL. SELECT SKIP M ...

  7. odoo14里面的消息机制

    odoo里面 字段追踪.消息通知机制:  一.使用方式:1.在定义模型的py文件里继承mail模型 class DemoModle(models.Model): """ ...

  8. HashSet 和 HashMap 的比较

    HashMap 和 HashSet 都是 collection 框架的一部分,它们让我们能够使用对象的集合.collection 框架有自己的接口和实现,主要分为 Set 接口,List 接口和 Qu ...

  9. JS 实现一个 LRU 算法

    LRU 是 Least Recently Used 的缩写,即最近最少使用,是一种常用的页面置换算法,选择内存中最近最久未使用的页面予以淘汰. 可用的 NodeJS 库见node-lru-cache ...

  10. linux下利用JMX监控Tomcat

    利用JMX监控Tomcat,就是相当于部署在tomcat上的应用作为服务端,也就是被管理资源的对象.然后通过程序或者jconsole远程连接到该应用上来.远程连接需要服务器端提供ip和port.如果需 ...