使用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 ...
随机推荐
- HDFS学习总结之安装
HDFS linux安装总结(基于hadoop-2.6.0-cdh5.7.0 伪分部安装) 1.jdk安装 1) 直接下载jdk包放到安装目录即可(jdk-8u131-linux-x64.tar.gz ...
- ajax请求对返回数据data的处理
1,ajax请求会根据响应头的返回数据类型对返回的数据data变量进行不同的处理 $.get("data/user-permission-submit-" + ddo.manipu ...
- Redis主从复制那点事
我们在 Redis持久化机制你学会了吗?学习了AOF和RDB,如果Redis宕机,他们分别通过回放日志和重新读入RDB文件的方式恢复数据,从而提高可靠性.我们今天来想这么一个问题,假如我们 ...
- shell脚本(12)-特殊变量介绍
一.特殊变量介绍: 1.$* :代表所有参数,其间隔为IFS内参数的第一个字元 2.$@ :与*星号类同,不同之处在于不参照IFS 3.$# :代表参数数量 4.$: 代表上一个指令的返回值 5.$- ...
- 第二章 Vant的v-cell的v-for使用
遍历加载list数据,类似el-table 一.问题描述 由于VantUI中没有类似于el-table的table组件,看官网的范例,只找到了cell组件有v-for
- solr(CVE-2017-12629)远程命令执行
影响版本Apache Solr 5.5.0到7.0.1版本 solr(CVE-2017-12629-RCE) 环境搭建 1.burp检测 创建listen POST /solr/demo/config ...
- noip模拟30[毛毛毛探探探]
\(noip模拟30\;solutions\) 所以说,这次被初中的大神给爆了????? 其实真的不甘心,这次考场上的遗憾太多,浪费的时间过多,心情非常不好 用这篇题解来结束这场让人伤心的考试吧 \( ...
- 开机时自动启动的AutoHotkey脚本 2019年10月09日
;;; 开机时自动启动的AutoHotkey脚本 2019年10月09日;; http://www.autoahk.com/archives/16600; https://www.cnblogs.co ...
- Mybatis学习笔记导航
Mybatis小白快速入门 简介 本人是一个Java学习者,最近才开始在博客园上分享自己的学习经验,同时帮助那些想要学习的uu们,相关学习视频在小破站的狂神说,狂神真的是我学习到现在觉得最GAN的老师 ...
- JS实现自定义工具类,隔行换色、复选框全选、隔行高亮等
很多功能都可以放在js的工具类中,在使用的时候直接调用 本次实现的功能包括: /** 0.当点击表的整行的任意位置时,第一列的复选框或者单选框均选中 1.隔行换色 2.复选框的全选效果 3.实现表格 ...