用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. ...
随机推荐
- 前端编码规范(2)HTML 规范
文档类型 推荐使用 HTML5 的文档类型申明: <!DOCTYPE html> (建议使用 text/html 格式的 HTML.避免使用 XHTML.XHTML 以及它的属性,比如 a ...
- 复习java基础第二天(异常处理)
一.常见的异常类型: public class TestException { public static void main(String[] args) { int i = 10; //数学异常: ...
- Deutsch lernen (03)
1. das Gewerbe, - 行业 Was ist Ihr Gewerbe? Welches Gewerbe treibt er? treiben - trieb - getrieben 从事 ...
- Hadoop-2.2.0在Unbuntu ADM64中需要重新编译Native Lib
通过:cat /etc/issue 查看当前系统版本: Ubuntu 12.04.3 通过:uname -ar 查看更想起信息: Linux ubuntu-236 3.8.0-29-generic # ...
- Day 19 numpy 模块
numpy 模块(多维数组) import numpy as np arr=np.array([1,2,3,4],[5,6,7,8]) print(arr) #[[1 2 3 4] #[5 6 7 8 ...
- eas之动态刷新Table
如何刷新表体数据行(表头不变) 示例1:删除所有表体行,并重新发取数事件该方法不会修改原先的绑定信息table.removeRows(); 示例2:删除所有表体行,修改绑定信息并重新取数指定新的que ...
- Linux基础:find命令总结
本文只总结一些常用的用法,更详细的说明见man find和 info find. find命令 find命令常用来查找文件或目录,可以根据给定的路径和表达式查找所需的文件或目录.该工具是由findut ...
- 51nod1185 威佐夫游戏 V2【博弈论】
有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出2堆石子的数量, ...
- 洛谷P1426 小鱼会有危险吗【水题模拟】
有一次,小鱼要从A处沿直线往右边游,小鱼第一秒可以游7米,从第二秒开始每秒游的距离只有前一秒的98%.有个极其邪恶的猎人在距离A处右边s米的地方,安装了一个隐蔽的探测器,探测器左右x米之内是探测范围. ...
- [51Nod1486] 大大走格子 (dp+容斥)
传送门 Description 有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数. Input 单组测试数据. 第一行有三个整数h, w, n(1 ≤ h, w ≤ ...