使用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 ...
随机推荐
- 【POJ3159】Candies(差分约束系统)
题意:有一些人, 给n个人派糖果,给出m组约束,每组约束包含A,B,c 三个数, 意思是A的糖果数比B少的个数不多于c,即B的糖果数 - A的糖果数<= c . 最后求n 比 1 最多多多少糖果 ...
- tyvj1271 零式求和
描述 请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N.现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白(例如1-2 3就等于1- ...
- 20180906关于mysql启动
转自 https://blog.csdn.net/sqlserverdiscovery/article/details/52808541
- CentOS 7: 设置时区和时间
查看当前时区和时间 $ date $ ls -l /etc/localtime 查看所有可用时区 $ timedatectl list-timezones | grep Asia 设置时区 $ tim ...
- Entity Framework性能影响因素分析
1.对象管理机制-复杂为更好的管理模型对象,EF提供了一套内部管理机制和跟踪对象的状态,保存对象一致性,使用方便,但是性能有所降低. 2.执行机制-高度封装在EF中,所有的查询表达式都会经过语法分析. ...
- 使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉载入很多其它
一.概述 本篇博客介绍的是怎样使用SwipeRefreshLayout和RecyclerView实现高仿简书Android端的下拉刷新和上拉载入很多其它的效果. 依据效果图能够发现,本案例实现了例如以 ...
- androidannotations的background和UiThread配合使用參考
简单介绍 androidannotations在开发中的代码规范思考:(MVC思考)时间太紧,先贴代码: Activity的代码: package edu.njupt.zhb.main; import ...
- 使用系统存储过程来监控SQLServer进程和会话具体解释
承接上文,本文讲述怎样使用系统存储过程来监控系统. SQLServer相同也提供了一系列系统存储过程用于监控SQLServer,获取当前进程.会话.请求以及锁定的具体信息.本文将演示系统存储过程 ...
- Spark SQL CLI 实现分析
背景 本文主要介绍了Spark SQL里眼下的CLI实现,代码之后肯定会有不少变动,所以我关注的是比較核心的逻辑.主要是对照了Hive CLI的实现方式,比較Spark SQL在哪块地方做了改动,哪些 ...
- logistic regression教程1
实现线性拟合 我们用python2.7实现上一篇的推导结果.请先安装python matplotlib包和numpy包. 具体代码如下: #!/usr/bin/env python #! -*- co ...