使用xml实现的增删改查功能
实体类:
package vo;
public class Contact {
private String id;
private String name;
private String gender;
private int age;
private String phone;
private String email;
private String qq;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String toString() {
return "Contact [id=" + id + ", name=" + name + ", gender=" + gender
+ ", age=" + age + ", phone=" + phone + ", email=" + email
+ ", qq=" + qq + "]";
}
}
接口类:
package service;
import java.util.List;
import vo.Contact;
public interface ContactOperator {
public void addContact(Contact contact);
public void updateContact(Contact contact);
public void deleteContact(String id);
public List<Contact> findAll();
}
接口的实现类:
package serviceImp;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import service.ContactOperator;
import util.XMLUtil;
import vo.Contact;
public class IContactOperator implements ContactOperator {
@Override
public void addContact(Contact contact) {
try {
File file = new File("d:\\contact.xml");
Document doc = null;
Element rootElem = null;
if(!file.exists()) { //如果没有xml文件,则创建xml文件
doc = DocumentHelper.createDocument();
//创建根标签
rootElem = doc.addElement("contactList");
} else { //如果有xml文件,则读取xml文件
doc = XMLUtil.getDocument();
//如果有xml文件,读取根标签
rootElem = doc.getRootElement();
}
//添加contact标签
/*
* <contact id="1">
<name>eric</name>
<gender>男</gender>
<age>20</age>
<phone>1343333</phone>
<email>eric@qq.com</email>
<qq>554444</qq>
</contact>
*/
Element contactElem = rootElem.addElement("contact");
contactElem.addAttribute("id", contact.getId());
contactElem.addElement("name").setText(contact.getName());
contactElem.addElement("gender").setText(contact.getGender());
contactElem.addElement("age").setText(contact.getAge()+"");
contactElem.addElement("phone").setText(contact.getPhone());
contactElem.addElement("email").setText(contact.getEmail());
contactElem.addElement("qq").setText(contact.getQq());
//把Document写出到xml文件
XMLUtil.write2xml(doc);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Override
public void updateContact(Contact contact) {
/**
* 需求: 修改id值为2的联系人
* 1)查询id值为2的contact标签
* 2)修改contact标签的内容
*/
try {
//1.读取xml文件
Document doc = XMLUtil.getDocument();
Element contactElem = (Element) doc.selectSingleNode("//contact[@id='" + contact.getId() + "']");
//2.修改contact标签内容
contactElem.element("name").setText(contact.getName());
contactElem.element("gender").setText(contact.getGender());
contactElem.element("age").setText(contact.getAge()+"");
contactElem.element("phone").setText(contact.getPhone());
contactElem.element("email").setText(contact.getEmail());
contactElem.element("qq").setText(contact.getQq());
//3.把Document写出到xml文件
XMLUtil.write2xml(doc);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 根据id删除节点
*/
@Override
public void deleteContact(String id) {
try {
// 1.读取xml文件
Document doc = XMLUtil.getDocument();
Element contactElem = (Element) doc.selectSingleNode("//contact[@id='" + id + "']");
//删除标签
contactElem.detach();
//3.把Document写出到xml文件
XMLUtil.write2xml(doc);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Override
public List<Contact> findAll() {
// 1. 读取xml文件
Document doc = XMLUtil.getDocument();
//2.创建List对象
List<Contact> list = new ArrayList<Contact>();
//3.读取contact标签
List<Element> conList = (List<Element>)doc.selectNodes("//contact");
for(Element e : conList) {
//创建Contact对象
Contact c = new Contact();
c.setId(e.attributeValue("id"));
c.setName(e.elementText("name"));
c.setGender(e.elementText("gender"));
c.setAge(Integer.parseInt(e.elementText("age")));
c.setPhone(e.elementText("phone"));
c.setEmail(e.elementText("email"));
c.setQq(e.elementText("qq"));
//把Contact放入list中
list.add(c);
}
return list;
}
}
xml操作的工具类:
package util;
import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
* xml操作的工具类
* @author Administrator
*
*/
public class XMLUtil {
/*
* 用于读取xml文件
*/
public static Document getDocument() {
try {
Document doc = new SAXReader().read(new File("d:/contact.xml"));
return doc;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}
/*
* 写入xml文件
*/
public static void write2xml(Document doc) {
try {
FileOutputStream out = new FileOutputStream("d:/contact.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(doc);
writer.close();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
测试类:
package test;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import service.ContactOperator;
import serviceImp.IContactOperator;
import vo.Contact;
public class ContactTest {
ContactOperator operator = null;
@Before
public void init() {
operator = new IContactOperator();
}
@Test
public void testAddContact(){
Contact contact = new Contact();
contact.setId("1");
contact.setName("rose");
contact.setGender("男");
contact.setAge(20);
contact.setPhone("134222233333");
contact.setEmail("eric@qq.com");
contact.setQq("33334444");
operator.addContact(contact);
}
@Test
public void testUploadContact() {
Contact contact = new Contact();
contact.setId("1"); //修改的ID
contact.setName("zhangsan");
contact.setGender("女");
contact.setAge(30);
contact.setPhone("135222233333");
contact.setEmail("zhangsan@qq.com");
contact.setQq("33334444");
operator.updateContact(contact);
}
@Test
public void testDelete() {
Contact contact = new Contact();
contact.setId("1"); //修改的ID
operator.updateContact(contact);
}
@Test
public void testFindAll() {
List<Contact> list = operator.findAll();
for (Contact c : list) {
System.out.println(c);
}
}
}
main方法:
package main;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import service.ContactOperator;
import serviceImp.IContactOperator;
import vo.Contact;
public class MainProgram {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ContactOperator operator = new IContactOperator();
// 不断接收输入
while(true) {
//1.看到菜单
printMenu();
//2.接收用户输入的命令
String command = br.readLine();
//3.根据用户的输入执行不同的操作
if("1".equals(command)){
//添加联系人
//获取用输入的数据
Contact contact = new Contact();
//获取ID
System.out.println("请输入编号:");
String id = br.readLine();
//获取姓名
System.out.println("请输入姓名:");
String name = br.readLine();
//获取性别
System.out.println("请输入性别:");
String gender = br.readLine();
//获取年龄
System.out.println("请输入年龄:");
String age = br.readLine();
//获取电话
System.out.println("请输入电话:");
String phone = br.readLine();
//获取邮箱
System.out.println("请输入邮箱:");
String email = br.readLine();
//获取QQ
System.out.println("请输入QQ:");
String qq = br.readLine();
contact.setId(id);
contact.setName(name);
contact.setGender(gender);
contact.setAge(Integer.parseInt(age));
contact.setPhone(phone);
contact.setEmail(email);
contact.setQq(qq);
operator.addContact(contact);
} else if ("2".equals(command)) {
//修改联系人
//获取用输入的数据
Contact contact = new Contact();
//获取ID
System.out.println("请输入需要修改的编号:");
String id = br.readLine();
//获取姓名
System.out.println("请输入修改后的姓名:");
String name = br.readLine();
//获取性别
System.out.println("请输入修改后的性别:");
String gender = br.readLine();
//获取年龄
System.out.println("请输入修改后的年龄:");
String age = br.readLine();
//获取电话
System.out.println("请输入修改后的电话:");
String phone = br.readLine();
//获取邮箱
System.out.println("请输入修改后的邮箱:");
String email = br.readLine();
//获取QQ
System.out.println("请输入修改后的QQ:");
String qq = br.readLine();
contact.setId(id);
contact.setName(name);
contact.setGender(gender);
contact.setAge(Integer.parseInt(age));
contact.setPhone(phone);
contact.setEmail(email);
contact.setQq(qq);
operator.updateContact(contact);
} else if ("3".equals(command)){
//删除联系人
//获取需要删除的ID
System.out.println("请输入删除的编号:");
String id = br.readLine();
operator.deleteContact(id);
} else if ("4".equals(command)){
//查询所有联系人
List<Contact> list = operator.findAll();
//打印输出
for (Contact con : list) {
System.out.println(con.toString());
}
} else if ("Q".equals(command)){
break;
} else {
System.out.println("输入的命令有误!");
}
}
} catch (Exception e) {
}
}
public static void printMenu() {
System.out.println("====================");
System.out.println("[1]添加联系人");
System.out.println("[2]修改联系人");
System.out.println("[3]删除联系人");
System.out.println("[4]查看所有联系人");
System.out.println("[Q]退出系统");
System.out.println("====================");
}
}
使用xml实现的增删改查功能的更多相关文章
- IDEA搭建SSM实现登录、注册,数据增删改查功能
本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...
- springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能
转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包 数据库表 数据库表就不用教大家了,一张表,很简 ...
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
JEECG 智能开发平台. 开发模式由代码生成器转变为Online Coding模式 (通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义 ...
- 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能
此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...
- BootstrapTable与KnockoutJS相结合实现增删改查功能
http://www.jb51.net/article/83910.htm KnockoutJS是一个JavaScript实现的MVVM框架.通过本文给大家介绍BootstrapTable与Knock ...
- JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能
JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id="productDg"></table> &l ...
- 使用Bootstrap模态框实现增删改查功能
模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 本文实现的是使用模态框实现简单的增删改查的功能. ...
- jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)
jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...
随机推荐
- poj 3074
题意:解数独 分析: 完整的数独有四个充要条件: 1.每个格子都有填数字 2.每列都有1~9中的每个数字 3.每行都有1~9中的每个数字 4.每个9宫格都有1~9中的每个数字 可以转化成精确覆盖问题. ...
- resin4开启jmx
https://blog.csdn.net/liuxiao723846/article/details/51321010 https://blog.csdn.net/u010342008/articl ...
- ECMAScript 6 入门学习笔记(一)——let和const
一.let ①声明变量 let a = 1: ②只在所在代码块内有效,不影响块以外 ③不存在变量提升(不能先用后声明) ④暂时性死区 let声明的变量“绑定”这个区域,不受外部影响. let声明之前, ...
- springmvc 日期转换器
package com.xxx.common.controller.converter; import org.joda.time.DateTime; import org.joda.time.for ...
- MyBatis3-SqlSessionDaoSupport的使用
以下内容引用自http://www.yihaomen.com/article/java/336.htm: 在MyBatis3中这个Mapper接口貌似充当了以前在iBatis2中的DAO层的作用.但事 ...
- RDLC报表总结
这2天纠结的报表基本上已近完成大部分功能.现在总结一下自己近期的学习成果 首先制作微软RDLC报表由以下三部分构成:1.制作自己的DateSet集合(就是报表的数据集):2.制作自己的报表文件.rdl ...
- HDU 1973
Prime Path Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式
es6 Object.assign 目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...
- Mahout--(一)数据承载
mahout API英文解释:https://builds.apache.org/job/Mahout-Quality/javadoc/ 推荐数据的处理是大规模的,在集群环境下一次要处理的数据可能是数 ...
- JAVA学习第二十一课(多线程(一)) - (初步了解)
放假在家,歇了好几天了,也没学习,今天学习一下多线程.找找感觉.后天就要回学校了.sad... PS:包 没有什么技术含量,会用就可以,日后开发就必需要会用啦,所以打算先放一放,先来多线程 一.多线程 ...