使用dom4工具:增删改xml文件(七)
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文件(七)的更多相关文章
- 60分钟课程: 用egg.js实现增删改查,文件上传和restfulApi, webpack react es6 (一)
今天开始我将写nodejs框架egg.js, react 实现的增删改查,文件上传等常用的b/s场景,这个将分3部分来写. 会让你在60分钟内快速 入口并应用~ 你应该用es6, node,或是ph ...
- IDEA 开发工具在POM.XML文件中增加依赖
在POM.XML 中使用快捷键 ALT+INSERT 选择第一个,输入关键字即可 选择版本,确认,ok
- MYSQL 之 JDBC(九):增删改查(七)DAO的补充和重构
DAO重构后的代码 package com.litian.jdbc; import org.apache.commons.beanutils.BeanUtils; import java.sql.*; ...
- XML为数据库进行增删改查(实例)
//增删改查文件 package xml2; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.Fi ...
- iOS开发-plist文件增删改查
plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件.扩展名为.plis ...
- 使用idea对XML的增删改查
XML:是一种可扩展标记性的语言,与java语言无关,它可以自定义标签. 1.首先需要到导入Dom4j架包,与自己所时候的ide关联 2.编写自己的xml文件,入上图所示(里面的所有元素及元素中的属性 ...
- Linux文件增删改
Linux目录/文件增删改 创建文件 (1) # touch <文件名称> (2) 花括号展开 touch /root/{1,3,9}.txt touch /root/{0..100}. ...
- node 通过mongoose实现 mongodb的增删改
node 通过mongoose实现 mongodb的增删改 新建文件test.js 内容如下: var mongoose = require('mongoose') , Schema = mo ...
- day38 mycql 初识概念,库(增删改查),表(增删改)以及表字段(增删改查),插入更新操作
在Navicat中把已经生成的表逆向成模型 数据库上,右键-逆向数据库到模型 ego笔记: 增删改查 文件夹(库) 增 create database day43 charset utf8; 改 al ...
随机推荐
- facade层,service 层,domain层,dao 层设计
转自http://fei-6666.iteye.com/blog/446247,记录下来 一,Service->DAO,只能在Service中注入DAO. 二,DAO只能操作但表数据,跨表操作放 ...
- this的四种用法!
经常会有人问到this的用法,其实简单来说,this有四种应用场景,分别是在构造函数上.对象属性中.普通函数中.call和apply方法中. 首先我们来看第一种:在构造函数中的用法 第二种是在在对象属 ...
- 简单快速安装Apache+PHP+MySql服务环境(三)—— 下载安装phpmyadmin
为了方便在Linux上操作mysql数据库,打算安装一个phpmyadmin,不过在下载安装的过程中出现了一些坑,特此记录. 1. 在官网上下载phpmyadmin https://files.php ...
- POJ1417 True Liars 题解
通过读题,容易发现,当回答为yes时 \(x,y\) 必属于同类,当回答为no时二者必为异类(并且当 \(x=y\) 时,回答必为yes,不过这题不用这个性质). 于是先按关系维护连通块,然后求出每个 ...
- 【排序+模拟】谁拿了最多奖学金 luogu-1051
题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 院士奖学金,每人$ 8000 $元,期末平均成绩高于\(80\)分(\(>80\)),并且在本 ...
- informix数据库分页
需求描述 当查询结果返回大量数据情况下,比如报表查询.需要按一定条件排序提供分页呈现数据. INFORMIX实现方案:Informix 数据库提供了非常便捷.高效的SQL. SELECT SKIP M ...
- odoo14里面的消息机制
odoo里面 字段追踪.消息通知机制: 一.使用方式:1.在定义模型的py文件里继承mail模型 class DemoModle(models.Model): """ ...
- HashSet 和 HashMap 的比较
HashMap 和 HashSet 都是 collection 框架的一部分,它们让我们能够使用对象的集合.collection 框架有自己的接口和实现,主要分为 Set 接口,List 接口和 Qu ...
- JS 实现一个 LRU 算法
LRU 是 Least Recently Used 的缩写,即最近最少使用,是一种常用的页面置换算法,选择内存中最近最久未使用的页面予以淘汰. 可用的 NodeJS 库见node-lru-cache ...
- linux下利用JMX监控Tomcat
利用JMX监控Tomcat,就是相当于部署在tomcat上的应用作为服务端,也就是被管理资源的对象.然后通过程序或者jconsole远程连接到该应用上来.远程连接需要服务器端提供ip和port.如果需 ...