实体类:

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实现的增删改查功能的更多相关文章

  1. IDEA搭建SSM实现登录、注册,数据增删改查功能

     本博文的源代码:百度云盘/java/java实例/SSM实例/SSM实现登录注册,增删改查/IDEA搭建SSM实现登录,注册,增删改查功能.zip 搭建空的Maven项目 使用Intellij id ...

  2. springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能

    转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包     数据库表 数据库表就不用教大家了,一张表,很简 ...

  3. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  4. Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)

    JEECG 智能开发平台. 开发模式由代码生成器转变为Online Coding模式                      (通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义 ...

  5. 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能

    此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...

  6. BootstrapTable与KnockoutJS相结合实现增删改查功能

    http://www.jb51.net/article/83910.htm KnockoutJS是一个JavaScript实现的MVVM框架.通过本文给大家介绍BootstrapTable与Knock ...

  7. JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能

    JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id="productDg"></table> &l ...

  8. 使用Bootstrap模态框实现增删改查功能

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 本文实现的是使用模态框实现简单的增删改查的功能. ...

  9. jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)

    jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...

随机推荐

  1. 【POJ3159】Candies(差分约束系统)

    题意:有一些人, 给n个人派糖果,给出m组约束,每组约束包含A,B,c 三个数, 意思是A的糖果数比B少的个数不多于c,即B的糖果数 - A的糖果数<= c . 最后求n 比 1 最多多多少糖果 ...

  2. tyvj1271 零式求和

    描述 请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N.现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白(例如1-2 3就等于1- ...

  3. 20180906关于mysql启动

    转自 https://blog.csdn.net/sqlserverdiscovery/article/details/52808541

  4. CentOS 7: 设置时区和时间

    查看当前时区和时间 $ date $ ls -l /etc/localtime 查看所有可用时区 $ timedatectl list-timezones | grep Asia 设置时区 $ tim ...

  5. Entity Framework性能影响因素分析

    1.对象管理机制-复杂为更好的管理模型对象,EF提供了一套内部管理机制和跟踪对象的状态,保存对象一致性,使用方便,但是性能有所降低. 2.执行机制-高度封装在EF中,所有的查询表达式都会经过语法分析. ...

  6. 使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉载入很多其它

    一.概述 本篇博客介绍的是怎样使用SwipeRefreshLayout和RecyclerView实现高仿简书Android端的下拉刷新和上拉载入很多其它的效果. 依据效果图能够发现,本案例实现了例如以 ...

  7. androidannotations的background和UiThread配合使用參考

    简单介绍 androidannotations在开发中的代码规范思考:(MVC思考)时间太紧,先贴代码: Activity的代码: package edu.njupt.zhb.main; import ...

  8. 使用系统存储过程来监控SQLServer进程和会话具体解释

     承接上文,本文讲述怎样使用系统存储过程来监控系统. SQLServer相同也提供了一系列系统存储过程用于监控SQLServer,获取当前进程.会话.请求以及锁定的具体信息.本文将演示系统存储过程 ...

  9. Spark SQL CLI 实现分析

    背景 本文主要介绍了Spark SQL里眼下的CLI实现,代码之后肯定会有不少变动,所以我关注的是比較核心的逻辑.主要是对照了Hive CLI的实现方式,比較Spark SQL在哪块地方做了改动,哪些 ...

  10. logistic regression教程1

    实现线性拟合 我们用python2.7实现上一篇的推导结果.请先安装python matplotlib包和numpy包. 具体代码如下: #!/usr/bin/env python #! -*- co ...