package cn.csdn.dao;
import java.io.File;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import cn.csdn.domain.Sex;
import cn.csdn.domain.Student;
public class StudentDaoImpl implements StudentDao {
private String url = Student.class.getClassLoader().getResource("")
.getPath().replace("%20", " ");
SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd");
public boolean insert(Student entity) {
boolean flag = false;
try {
// 创建解析器
SAXReader saxReader = new SAXReader();
// 加载文件并解析
Document doc = saxReader.read(new File(url + "student.xml"));
// 得到根节点元素
Element root = doc.getRootElement();
// 创建根节点的子元素并添加到根元素里
Element student = root.addElement("student");
// 创建子元素的子元素并添加
student.addElement("name").setText(entity.getName());
student.addElement("age").setText(entity.getAge() + "");
student.addElement("sex").setText(entity.getSex().getValue());
student.addElement("birthday").setText(
simpleDate.format(entity.getBirthday()));
student.addElement("email").setText(entity.getEmail());
student.addElement("address").setText(entity.getAddress());
// 定义格式
OutputFormat outFormat = new OutputFormat(" ", true);
// 获取写入流对象并写入文件
XMLWriter xmlWriter = new XMLWriter(new FileWriter(url
+ "student.xml"), outFormat);
// 将doc对象的属性写入文件
xmlWriter.write(doc);
// 关闭流操作
xmlWriter.close();
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
public boolean delete(String name) {
boolean falg = false;
try {
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new File(url + "student.xml"));
Element root = doc.getRootElement();
@SuppressWarnings("unchecked")
List<Element> list = root.elements();
for (int i = 0; i < list.size(); i++) {
Element stu = list.get(i);
if (stu.element("name").getText().equals(name)) {
stu.getParent().remove(stu);
falg = true;
}
}
// 定义格式
OutputFormat outFormat = new OutputFormat(" ", true);
// 获取写入流对象并写入文件
XMLWriter xmlWriter = new XMLWriter(new FileWriter(url
+ "student.xml"), outFormat);
// 将doc对象的属性写入文件
xmlWriter.write(doc);
// 关闭流操作
xmlWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
return falg;
}
public boolean update(Student entity) {
boolean flag = false;
try {
// 创建解析器
SAXReader saxReader = new SAXReader();
// 加载文件并解析
Document doc = saxReader.read(new File(url + "student.xml"));
// 得到根节点元素
Element root = doc.getRootElement();
// 创建根节点的子元素并添加到根元素里
@SuppressWarnings("unchecked")
List<Element> list = root.elements();
Element student = list.get(entity.getPos());
// 创建子元素的子元素并添加
student.element("name").setText(entity.getName());
student.element("age").setText(entity.getAge() + "");
student.element("sex").setText(entity.getSex().getValue());
student.element("birthday").setText(
simpleDate.format(entity.getBirthday()));
student.element("email").setText(entity.getEmail());
student.element("address").setText(entity.getAddress());
// 定义格式
OutputFormat outFormat = new OutputFormat(" ", true);
// 获取写入流对象并写入文件
XMLWriter xmlWriter = new XMLWriter(new FileWriter(url
+ "student.xml"), outFormat);
// 将doc对象的属性写入文件
xmlWriter.write(doc);
// 关闭流操作
xmlWriter.close();
flag = true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
public Student select(String name) {
Student student = null;
try {
// 创建解析器
SAXReader sax = new SAXReader();
// 装载并解析文件
Document doc = sax.read(new File(url + "student.xml"));
// 获取根元素名称
Element root = doc.getRootElement();
@SuppressWarnings("unchecked")
List<Element> list = root.elements();
for (int i = 0; i < list.size(); i++) {
Element stu = list.get(i);
if (stu.element("name").getText().equals(name)) {
student = new Student();
student.setPos(i);
student.setName(stu.element("name").getText());
if (stu.element("sex").getText().equals("男")) {
student.setSex(Sex.MALE);
} else {
student.setSex(Sex.FEMALE);
}
student.setAge(Integer
.valueOf(stu.element("age").getText()));
student.setEmail(stu.element("email").getText());
student.setAddress(stu.element("address").getText());
student.setBirthday(simpleDate.parse(stu
.element("birthday").getText()));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return student;
}
public List<Student> findAll() {
List<Student> allentites = new ArrayList<Student>();
try {
// 创建解析器
SAXReader sax = new SAXReader();
// 装载并解析文件
Document doc = sax.read(new File(url + "student.xml"));
// 获取根元素名称
Element root = doc.getRootElement();
@SuppressWarnings("unchecked")
List<Element> list = root.elements();
for (int i = 0; i < list.size(); i++) {
Element stu = list.get(i);
Student student = new Student();
student.setPos(i);
student.setName(stu.element("name").getText());
if (stu.element("sex").getText().equals("男")) {
student.setSex(Sex.MALE);
} else {
student.setSex(Sex.FEMALE);
}
student.setAge(Integer.valueOf(stu.element("age").getText()));
student.setEmail(stu.element("email").getText());
student.setAddress(stu.element("address").getText());
student.setBirthday(simpleDate.parse(stu.element("birthday")
.getText()));
allentites.add(student);
}
} catch (Exception e) {
e.printStackTrace();
}
return allentites;
}
public boolean delete(Student entity) {
boolean falg = false;
try {
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new File(url + "student.xml"));
Element root = doc.getRootElement();
@SuppressWarnings("unchecked")
List<Element> list = root.elements();
for (int i = 0; i < list.size(); i++) {
Element stu = list.get(i).element("name");
if (stu.getText().equals(entity.getName())) {
System.out.println(stu.getText() + "---------" + url);
stu.getParent().getParent().remove(stu.getParent());
falg = true;
}
}
// 定义格式
OutputFormat outFormat = new OutputFormat(" ", true);
// 获取写入流对象并写入文件
XMLWriter xmlWriter = new XMLWriter(new FileWriter(url
+ "student.xml"), outFormat);
// 将doc对象的属性写入文件
xmlWriter.write(doc);
// 关闭流操作
xmlWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
return falg;
}
}
如有疑问,请留言!
分享到:
相关推荐
java实现对xml文件的增 删 改 查 操作
主要介绍了Java对XML文件增删改查操作,结合完整实例形式分析了java针对xml格式数据的常见读写、增删改查等操作技巧,需要的朋友可以参考下
java写的关于xml文档的解析,有关增删改查全方面的操作,而且有多种不同的方法
Dom操作xml文件,增删改查的操作,三层架构设计,servlet,过滤器,利用单例模式开发
代码主要是显示xml文件,之后对xml文件进行增删改查等操作
HY增删改查代码生成工具。HY增删改查代码生成工具,快速生成crud应用,支持自定义模板扩展。适合后台管理应用的基本增删该查代码的生成,简单配置即可搞定一个单页增删改查应用!可以生成以下代码 html页面(默认 可...
该文件是一页完整代码,它是使用dom4j对xml的解析,对xml的增删改差
编写Web应用程序(JavaEE平台上的应用,能够运行在Tomcat服务器上),实现学生信息的增删改查。 在Web页面上实现添加一个学生记录,删除某个学生记录,修改某个学生记录,和按照姓名,学号进行查询。 要求列表输出...
java图形界面实现对xml解析,从而实现xml的增删改查,类似将xml当做数据的存储介质。内附java工程,jar打包后的exe文件,运行速度有点慢,双击后稍等片刻即可显示,另外,此项目使用netbeansIDE编写,导入eclipse...
一个用于阅读XML 内容的JAVA程序,实现了对XML文件的增删改查!
java操作xml增删改查,JDOM 和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM.虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它...
Java操作xml文件,对xml文件的增、删、改、查,简单的web应用,几个功能对应几个servlet
主要介绍了java使用DOM对XML文档进行增删改查操作实例代码,实例涉及对xml文档的增删改查,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
java调用oracle存储过程入门实例 增删改查 使用dom4j读取数据库的配置文件(xml) jdbc中connection的管理 使用threadlocal
目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J. 2:JDOM 和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还...
简单的增删改查,实现java文件导出成xml文件
日程系统读取的是xml数据格式的日程信息,并能实现增删改查,来控制xml文档
此文件介绍如何利用OpenJweb快速开发平台快速生成增删改查功能页面,已实现由用户定义及创建数据库表,在平台中生成hibernate映射文件和POJO类,生成的增删改查页面包括跨数据库的分页,排序,条件查询,及下拉型字段根据...
基于MyBatis的XML配置文件的Java项目,可以进行基本的增删改查操作,使用JDBC连接数据库
本项目是一个基于SSM(Spring、SpringMVC、MyBatis)框架的Java企业级增删改查(CRUD)系统源码。该系统主要采用Java语言开发,同时整合了CSS、JavaScript等前端技术。 技术构成: - 后端语言:Java - 前端技术:...