用dom4j解析xml文件并执行增删改查操作
转自:https://www.aliyun.com/jiaocheng/1339446.html
xml文件:
<?xml version="1.0" encoding="GBK"?> <phoneinfo>
<brand name="小米" id="1">
<type name="MI5"/>
<type name="NOTE"/>
<type name="MI5S"/>
</brand>
<brand name="华为" id="2">
<type name="荣耀8"/>
<type name="荣耀8plus"/>
</brand>
<brand name="苹果" id="3">
<type name="iphone7"/>
<type1 name="iphone6"/>
</brand>
</phoneinfo> 用dom4j解析xml文件
package com.hfxt; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; //dom4j解析xml并且执行(增、删、改、查)操作
public class dom4jXmlDemo { private Document document; public static void main(String[] args){
dom4jXmlDemo domXml = new dom4jXmlDemo();
domXml.getDom();
domXml.addPhoneInfo();
domXml.updatePhoneInfo();
//domXml.deletePhoneInfo();
domXml.showPhoneInfo(); } //获取DOM树
public void getDom(){
SAXReader reader = new SAXReader();
try {
document = reader.read(new File("phoneinfo.xml"));
} catch (DocumentException e) {
e.printStackTrace();
}
} //增加手机信息
public void addPhoneInfo(){
//获取根节点元素
Element element = document.getRootElement();
//添加brand节点
Element brand = element.addElement("brand");
//为brand添加属性并且赋值
brand.addAttribute("name","苹果");
//添加type节点
Element type = brand.addElement("type");
Element type1 = brand.addElement("type1");
//为type节点添加name属性并且赋值
type.addAttribute("name","iphone7");
type1.addAttribute("name","iphone6");
saveXml("phoneinfo.xml");
} //删除手机信息
public void deletePhoneInfo(){
//获取根节点
Element element = document.getRootElement();
Iterator brand = element.elementIterator();
//遍历获取每个节点信息
while(brand.hasNext()){
Element eleBrand = (Element)brand.next();
//删除name为苹果的brand
if(eleBrand.attributeValue("name").equals("苹果")){
eleBrand.getParent().remove(eleBrand);
}
}
//保存信息
saveXml("phoneinfo.xml");
} //修改手机信息
public void updatePhoneInfo(){
//获取手机信息
Element element = document.getRootElement();
Iterator brand = element.elementIterator();
int id = 0;
while(brand.hasNext()){
Element eleBrand = (Element)brand.next();
id++;
eleBrand.addAttribute("id",id+"");
}
saveXml("phoneinfo.xml");
} //显示手机信息
public void showPhoneInfo(){
//获取根节点
Element element = document.getRootElement();
Iterator brand = element.elementIterator();
while(brand.hasNext()){
Element eleBrand = (Element)brand.next();
//根据name属性获取对应的值的名字
System.out.println(eleBrand.attributeValue("name"));
//获取type节点
Iterator type = eleBrand.elementIterator();
//遍历所有type节点
while(type.hasNext()){
Element eleType = (Element)type.next();
System.out.println("\t"+eleType.attributeValue("name"));
}
}
} //保存信息到xml
public void saveXml(String path){
//格式化
OutputFormat format = OutputFormat.createPrettyPrint();
//指定字符编码格式
format.setEncoding("GBK");
XMLWriter writer = null;
//将文件按照指定格式输出到指定路径中
try {
writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(path)),format);
writer.write(document);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
//关闭服务
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }
- 用dom4j解析xml文件并执行增删改查操作
用dom4j解析xml文件并执行增删改查操作的更多相关文章
- 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作
一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...
- XML基本概念及增删改查操作
一.概念及特征: 1. XML 指可扩展标记语言(Extensible Markup Language),用户可以自己定义标签.XML 被设计用来传输和存储数据,而 HTML 用于格式化并显示数据,并 ...
- Python3练习:对员工信息文件,实现增删改查操作
1.练习要求: 2.数据文件(data_staff.txt) 1,Alex Li,22,13651054684,运维,2013-02-04 2,Jack Wang,20,13312331232,HR, ...
- Python3.5 day4作业:对员工信息文件,实现增删改查操作。
需求: 1.可进行模糊查询,语法至少支持下面3种: 1.select name,age from staff_table where age > 22 2.select * from staf ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- 用DOM4J解析XML文件案例
用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:
- 使用DOM4J解析XMl文件与读取XML文件
XML文件 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...
- Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...
随机推荐
- vue-cli脚手架安装过程(精简版)
1:打开node的控制台,并找到对应的文件夹 2:检查node的版本 node -v 3:检查npm的版本 npm -v 4:检查cnpm的版本 cnpm -v 5:安装全局及脚手架 cnpm ins ...
- 关于ListView中item与子控件抢夺焦点的解决方法
1.在开发中,listview可以说是我们使用最频繁的控件之一了,但是关于listview的各种问题也是很多.当我们使用自定义布局的Listview的时候,如果在item的布局文件里面存在Button ...
- 【Oracle】redo与undo
一 .redo(重做信息) 是Oracle在线(或归档)重做日志文件中记录的信息,万一出现失败时可以利用这些数据来“重放”(或重做)事务.Oracle中记录这些信息的文件叫做redo log file ...
- C#程序集版本控制文件属性祥解
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices ...
- session 存入redis 或 memcache 的方法
Session简介 session,中文经常翻译为会话,其本来的含义是 指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session.有时候我们 ...
- IT狂人职场路:揭秘华为百度高管如何炼成?
原文链接:http://www.hdeso.com/waibao/detail.asp?id=45660 原文链接:http://tech.hexun.com/2014-02-18/162264716 ...
- python write和writelines的区别
file.write(str)的参数是一个字符串,就是你要写入文件的内容.file.writelines(sequence)的参数是序列,比如列表,它会迭代帮你写入文件. 下面两种方式写入文件的效果是 ...
- webpack学习(五)—webpack+react+es6(第1篇)
如果你看过webpack学习系列的前一个文章,接下来做的东西会比较简单 :webpack学习(四)— webpack-dev-server react发展的很快,现在大部分开发react相关的项目,都 ...
- Java实验环境搭建
1.JDK的下载一.JDK的下载及安装 (1).网站网址搜索http://www.oracle.com/technetwork/java,进入浏览页(2)找到Trials and Download 点 ...
- apk下载的网址生成一个二维码
apk提供二维码扫描下载,其实就是把apk所在的地址生成二维码. 下面提供一个在线二维码生成网址,http://cli.im/text/1833744?iID7V