关于XML增删查改的小案例

1.目录部分

仅供参考

 【友情提示】需要在lib导入dom4j-1.1.jar和jaxen-1.1.1.jar两个jar包

 2.创建一个content.xml的XML文件

<?xml version="1.0" encoding="UTF-8"?>

<contacts>
  <user name="1234" pwd="1234">
    <contact id="2eaa2dbb32064cf0afd6a5e1013a6cbf">
      <name>simons</name>
      <tel>88888</tel>
      <sex>0</sex>
    </contact>
    <contact id="7fe2cf73804645f0abbca1303b78ec9a">
      <name>james</name>
      <tel>99999</tel>
      <sex>0</sex>
    </contact>
    <contact id="fa5fbeb691b240e0be4abd7e7eac23fc">
      <name>gou</name>
      <tel>1234556</tel>
      <sex>0</sex>
    </contact>
  </user>
  <user name="tom" pwd="1111">
    <contact id="688f0e262e5841ba8d6ceceffa9f9f4d">
      <name>lx</name>
      <tel>12333</tel>
      <sex>1</sex>
    </contact>
  </user>
  <user name="123" pwd="123">
    <contact id="a82df186d91b409f899dfb24e41b76ed">
      <name>猫</name>
      <tel>123654</tel>
      <sex>1</sex>
    </contact>
  </user>
</contacts>

注:该XML内容是博主随机输入的,大家可以凭借自己喜好书写。

 *3.源代码部分

package test;

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;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Scanner;
import java.util.UUID;

public class test {
    //扫描输入的文本
    public static Scanner input = new Scanner(System.in);
    //主函数
    public static void main(String[] args) throws Exception {
        while (true) {
            System.out.println("1.登录");
            System.out.println("2.注册");
            System.out.println("0.退出");
            int number = input.nextInt();
            switch (number) {
                case 1:
                    //调用登录方法
                    doEnter();
                    break;
                case 2:
                    //调用注册方法
                    login();
                    break;
                case 0:
                    System.out.println("谢谢您的使用,再见!!!");
                    return;
                default:
                    System.out.println("输入形式不正确");
                    break;
            }
        }
    }
    //读取XML并返回一个集合
    public static List<Element> getUser() throws DocumentException {
        SAXReader reader = new SAXReader();
        Document doc = reader.read("./src/content.xml");
        List<Element> list = doc.selectNodes("//user");
        return list;
    }
    //登录方法
    public static void doEnter() throws Exception {
        System.out.println("**********************");
        System.out.println("*\t\t用户登录\t\t*");
        System.out.println("**********************");
        System.out.println("请输入用户名");
        String username = input.next();
        System.out.println("请输入密码");
        String password = input.next();
        //调用判断密码是否正确的方法
        boolean judge = judge(username, password);
        if (judge == true) {
            System.out.println("恭喜,登录成功,请选择下一步操作!");
            //调用登录成功后进入子菜单方法
            Next(username);
        } else {
            System.out.println("您的账号或者密码错误,请重新登陆");
        }
    }
    //登录成功后进入子菜单
    private static void Next(String username) throws Exception {
        while (true) {
            System.out.println("1:显示所有联系人");
            System.out.println("2:添加联系人");
            System.out.println("3:删除联系人");
            System.out.println("4:修改联系人");
            System.out.println("0:返回到软件主界面");
            int number = input.nextInt();
            switch (number) {
                case 1:
                    //调用显示所有联系人方法
                    ShowAllContacts(username);
                    break;
                case 2:
                    //调用添加联系人方法
                    AddContacts(username);
                    break;
                case 3:
                    //调用删除联系人方法
                    DeleteContacts(username);
                    break;
                case 4:
                    //调用修改联系人方法
                    AlterContacts(username);
                    break;
                case 0:
                    return;
                default:
                    System.out.println("您的操作不当,请重新登录");
                    break;
            }
        }
    }
    //修改联系人
    private static void AlterContacts(String username) throws Exception {
        System.out.println("请输入你要修改的联系人姓名");
        String aName = input.next();
        List<Element> list = getUser();
        for (Element ele : list) {
            if (ele.attributeValue("name").equals(username)){
                List<Element> con = ele.selectNodes("contact");
                for (Element el : con) {
                    if (el.elementText("name").equals(aName)){
                        System.out.println("请输入修改后的名字");
                        String iName = input.next();
                        System.out.println("请输入修改后的电话");
                        String iTel = input.next();
                        System.out.println("请输入修改后的性别");
                        String iSex = input.next();
                        el.element("name").setText(iName);
                        el.element("tel").setText(iTel);
                        if (iSex.equals("男")){
                            el.element("sex").setText("0");
                        }else if (iSex.equals("女")){
                            el.element("sex").setText("1");
                        }
                        System.out.println("修改成功");
                        OutputFormat of = OutputFormat.createPrettyPrint();
                        XMLWriter xw = new XMLWriter(new FileOutputStream("./src/content.xml"),of);
                        Document doc = el.getDocument();
                        xw.write(doc);
                        xw.close();
                    }
                }
            }
        }
    }
    //删除联系人
    private static void DeleteContacts(String username) throws Exception {
        System.out.println("请输入你要删除的联系人姓名");
        String cname = input.next();
        List<Element> list = getUser();
        for (Element ele : list) {
            if (ele.attributeValue("name").equals(username)) {
                List<Element> con = ele.selectNodes("contact");
                for (Element el : con) {
                    if (el.elementText("name").equals(cname)) {
                        el.getParent().remove(el);
                        System.out.println("删除成功");
                        OutputFormat of = OutputFormat.createPrettyPrint();
                        XMLWriter xw = new XMLWriter(new FileOutputStream("./src/content.xml"),of);
                        Document doc = ele.getDocument();
                        xw.write(doc);
                        xw.close();
                    }
                }
            }
        }

    }
    //添加联系人
    private static void AddContacts(String username) {
        System.out.println("请输入你的名字");
        String wName = input.next();
        System.out.println("请输入你的电话号码");
        String wTel = input.next();
        System.out.println("请输入你的性别");
        String wSex = input.next();
        XMLWriter xw = null;
        //UUID方法,随机生成一个32位的id
        String id = UUID.randomUUID().toString().replace("-", "");
        try {
            List<Element> list = getUser();
            for (Element ele : list) {
                if (ele.attributeValue("name").equals(username)) {
                    Element con = ele.addElement("contact").addAttribute("id", id);
                    con.addElement("name").setText(wName);
                    con.addElement("tel").setText(wTel);
                    if (wSex.equals("男")) {
                        con.addElement("sex").setText("0");
                    } else if (wSex.equals("女")) {
                        con.addElement("sex").setText("1");
                    }
                    System.out.println("添加成功");
                    OutputFormat of = OutputFormat.createPrettyPrint();
                    xw = new XMLWriter(new FileOutputStream("./src/content.xml"), of);
                    Document doc = ele.getDocument();
                    xw.write(doc);
                    xw.close();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //显示所有联系人
    private static void ShowAllContacts(String username) throws DocumentException {
        List<Element> list = getUser();
        String sex = null;
        for (Element ele : list) {
            if (ele.attributeValue("name").equals(username)) {
                List<Element> conList = ele.selectNodes("contact");
                for (Element el : conList) {
                    String name = el.elementText("name");
                    String tel = el.elementText("tel");
                    String sex1 = el.elementText("sex");
                    System.out.println("联系人:姓名为" + name + ",电话为" + tel + ",性别为" + (sex1.equals("0") ? "男" : "女"));
                }
            }
        }
    }
    //判断密码是否正确  并返回判断值
    public static boolean judge(String username, String password) throws DocumentException {
        List<Element> list = getUser();
        for (Element ele : list) {
            String name = ele.attribute("name").getValue();
            String pwd1 = ele.attribute("pwd").getValue();
            if (username.equals(name) && password.equals(pwd1))
                return true;
        }
        return false;
    }
    //注册方法
    public static void login() throws DocumentException, IOException {
        System.out.println("**********************");
        System.out.println("*\t\t注册页面\t\t*");
        System.out.println("**********************");
        //读取XML文件
        SAXReader reader = new SAXReader();
        Document doc = reader.read("./src/content.xml");
        //获取根节点contacts
        Element root = doc.getRootElement();
        System.out.println("请输入账号");
        String username = input.next();
        System.out.println("请输入密码");
        String password = input.next();
        //添加user
        Element ele = root.addElement("user").addAttribute("name", username).addAttribute("pwd", password);
        doc = ele.getDocument();
        //格式化输出  为的是更加美观
        OutputFormat of = OutputFormat.createPrettyPrint();
        XMLWriter xw = new XMLWriter(new FileOutputStream("./src/content.xml"),of);
        xw.write(doc);
        xw.close();
        System.out.println("注册成功!!!");
    }
}

4.用到的知识点

【友情提示】这个是给博主自己记忆用的可能并不全面

(1)读取XML

 (2)获取属性的属性值

 (3)用于比较的方法

 (4)获取元素集合

 (5)获取元素中间的文本内容

 (6)获取元素并书写元素中间的文本内容

 (7)格式化书写的文本形式,为了更加美观,强迫党狂喜

 (8)写XML

 (9)获取当前文本对象

 *(10)关闭流

 (11)生成一个随机id

 (12)增加元素,并增加其属性

 (13)获取父节点,并删除自身

5.成果展示

 至于效果展示,博主就不一一截图了,嘿嘿嘿,感兴趣的可以自己运行一下看一下,感谢大家的观看!!三克油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值