用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. ...
随机推荐
- poj1328 Radar Installation 区间贪心
题目大意: 在X轴选择尽量少的点作为圆心,作半径为d的圆.使得这些圆能覆盖所有的点. 思路: 把每个点都转化到X轴上.也就是可以覆盖这个点的圆心的位置的范围[a,b].然后按照每个点对应的a从小到大排 ...
- 【技术累积】【点】【java】【20】static关键字
基础概念 是个修饰符: 修饰变量.常量.方法.代码块: 被修饰的为静态: 方便在没有创建对象的情况下来进行调用(方法/变量): static修饰的成员被所有的对象所共享: static优先于对象存在, ...
- BZOJ 4817: [Sdoi2017]树点涂色 LCT+Access的性质+DFS序+线段树
Code: #include<bits/stdc++.h> #define maxn 200003 #define inf -1000000 using namespace std; vo ...
- BZOJ 2959: 长跑 LCT_并查集_点双
真tm恶心...... Code: #include<bits/stdc++.h> #define maxn 1000000 using namespace std; void setIO ...
- Docker 导入镜像报错:open /var/lib/docker/tmp/docker-import-743441288/redis-3.0.7/json: no such file or directory
下载好了redis的tar包,然后导入redis镜像是报错open /var/lib/docker/tmp/docker-import-743441288/redis-3.0.7/json: no s ...
- 【剑指Offer】17、树的子结构
题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 解题思路: 要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步, ...
- [jzoj 5775]【NOIP2008模拟】农夫约的假期 (前缀和+递推)
传送门 Description 在某国有一个叫农夫约的人,他养了很多羊,其中有两头名叫mm和hh,他们的歌声十分好听,被当地人称为"魔音"······ 农夫约也有自己的假期呀!他要 ...
- elasticsearch 权威指南聚合阅读笔记(七)
count(1) select clssId,count(1) from student group by classId { "size":0, "aggs" ...
- 百度之星2014初赛 - 1002 - Grids
先上题目: Grids Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- Ubuntu下ss的安装与使用
不得不说,linux真的有种让人用上就爱上的魔力,正好最近Ubuntu出了16.04,便索性装了个win10+Ubuntu的双系统,也算是告慰那永远留在老硬盘里的虚拟机吧. 言归正传,换上Ubuntu ...