如何使用XML作为小型数据库

前端之家收集整理的这篇文章主要介绍了如何使用XML作为小型数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何使用XML作为小型数据库
首先,我们以下面的user.xml作为我们所要使用的xml文件,具体内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<TUser>
<user userID="00001">
<UserName>小杨</UserName>
<DeptId>001</DeptId>
<Sex>男</Sex>
<IconId>11</IconId>
<City>德化</City>
<Password>123</Password>
<OnlineState>0</OnlineState>
<LastLoginTime>2012-05-09 16:22:40</LastLoginTime>
<RegisterTime>2007-01-11 16:18:05</RegisterTime>
</user>
<user userID="00002">
<UserName>小吴</UserName>
<DeptId>002</DeptId>
<City>福州</City>
<LastLoginTime>2012-05-09 16:22:44</LastLoginTime>
<RegisterTime>2007-01-11 16:18:21</RegisterTime>
</TUser>


@H_301_90@ 我们要做的是对这个xml文件进行增删改操作:
@H_301_90@ 共有六个类:
@H_301_90@
@H_301_90@ Computer.java 系统开始
@H_301_90@
@H_301_90@ Add.java 往xml添加一个用户的类的具体操作
@H_301_90@
@H_301_90@ Delete.java 从xml中删除一个用户的具体操作
@H_301_90@
@H_301_90@ Query.java 从xml中查询一个用户的具体操作 @H_301_90@
@H_301_90@ Update.java 新用户的信息 @H_301_90@
@H_301_90@ User.java 这是一个用户类,即一个xml中用户的具体类,此处用到了java的对象思想,把一个数据对象作为一个User,从而对这个User进行操作。

user.xml文件是放在F盘目录下哈;更改后是在F盘目录下产生出users.xml
在我们实际的开发、作为数据库的时候,读取得文件名就是我们产生的文件名,是在同一个文件下进行更改

@H_301_90@ import java.util.Scanner;
@H_301_90@
@H_301_90@ import MysqL.DataBaseConduct; @H_301_90@
@H_301_90@ public class Computer { @H_301_90@ public Computer(){ @H_301_90@ //开始整个系统,判断用户使用的是哪种数据库 @H_301_90@ System.out.println("数据库选择"); @H_301_90@ System.out.println("输入1为使用xml数据库"); @H_301_90@ System.out.println("输入2为使用MysqL数据库"); @H_301_90@ Scanner scan = new Scanner(System.in); @H_301_90@ int choice; @H_301_90@ while(true){ @H_301_90@ try{ //如果用户输入的数值不是1或者2,则出错 @H_301_90@ choice = scan.nextInt(); @H_301_90@ if(choice!=1&&choice!=2){ @H_301_90@ System.out.println("输入错误!请重新输入"); @H_301_90@ }else{ @H_301_90@ //如果输入的正确,则启动! @H_301_90@ //如果输入的是1,则启用XML作为数据库,否则,启用MysqL作为数据库 @H_301_90@ if(choice==1){ @H_301_90@ this.startXML(); @H_301_90@ }else{ @H_301_90@ this.startMysqL(); @H_301_90@ } @H_301_90@ break; @H_301_90@ } @H_301_90@ }catch(Exception e){ @H_301_90@ System.out.println("输入错误!请重新输入"); @H_301_90@ } @H_301_90@ } @H_301_90@ } @H_301_90@ public void startXML(){ @H_301_90@ System.out.println("欢迎使用该系统!"); @H_301_90@ Scanner scan = new Scanner(System.in); @H_301_90@ int num = 0; @H_301_90@ while(true){ @H_301_90@ System.out.println("请输入要执行的操作!"); @H_301_90@ System.out.println("1:查询用户"); @H_301_90@ System.out.println("2:增加用户"); @H_301_90@ System.out.println("3:修改用户"); @H_301_90@ System.out.println("4:删除用户信息"); @H_301_90@ try{ @H_301_90@ num = scan.nextInt(); @H_301_90@ if(num<1||num>4){ @H_301_90@ System.out.println("输入错误!请重新输入"); @H_301_90@ continue; @H_301_90@ } @H_301_90@ }catch(Exception e){ @H_301_90@ System.out.println("输入错误!"); @H_301_90@ } @H_301_90@ switch(num){ @H_301_90@ case(1):Query.getQuery();continue;//查询用户操作 @H_301_90@ case(2):Add.add();continue;//添加用户操作 @H_301_90@ case(3):Update.update();continue;//更新用户操作 @H_301_90@ case(4):Delete.delete();continue;//删除用户操作 @H_301_90@ default:System.out.println("输入错误!请重新输入!");continue; @H_301_90@ } @H_301_90@ } @H_301_90@ } @H_301_90@ public void startMysqL(){ @H_301_90@ DataBaseConduct MysqL = new DataBaseConduct(); @H_301_90@ MysqL.choose(); @H_301_90@ } @H_301_90@ public static void main(String[] args) { @H_301_90@ //启动系统 @H_301_90@ Computer com = new Computer(); @H_301_90@ } @H_301_90@ }

@H_301_90@ import java.io.File;
@H_301_90@ import java.io.FileWriter; @H_301_90@ import java.io.IOException; @H_301_90@
@H_301_90@ import org.dom4j.Document; @H_301_90@ import org.dom4j.DocumentException; @H_301_90@ import org.dom4j.Element; @H_301_90@ import org.dom4j.io.SAXReader; @H_301_90@ import org.dom4j.io.XMLWriter; @H_301_90@
@H_301_90@ public class Add { @H_301_90@ public static void add(){ @H_301_90@ while(true){ @H_301_90@ try{ @H_301_90@ //new出一个User,调用user.createUser()方法来填写这个用户的各种信息 @H_301_90@ User user = new User(); @H_301_90@ System.out.println("0"); @H_301_90@ user.createUser(); @H_301_90@ //调用添加用户,将user作为参数传递 @H_301_90@ Add.addUser(user); @H_301_90@ break; @H_301_90@ }catch(Exception e){ @H_301_90@ System.out.println("输入错误!请重新输入!"); @H_301_90@ } @H_301_90@ } @H_301_90@ } @H_301_90@ public static void addUser(User user){ @H_301_90@ try{ @H_301_90@ //读取文件 @H_301_90@ SAXReader saxReader = new SAXReader(); @H_301_90@ Document doc = saxReader.read(new File("F://user.xml")); @H_301_90@ //得到跟结点root @H_301_90@ Element root = doc.getRootElement(); @H_301_90@ //往根节点添加user元素 @H_301_90@ Element User = root.addElement("user"); @H_301_90@ //设置user的userID @H_301_90@ User.addAttribute("userID",user.getUserID()); @H_301_90@ //往user添加各种子元素和设置值 @H_301_90@ Element UserName = User.addElement("UserName"); @H_301_90@ UserName.setText(user.getUserName()); @H_301_90@ Element DeptId = User.addElement("DeptId"); @H_301_90@ DeptId.setText(user.getDeptId()); @H_301_90@ Element Sex = User.addElement("Sex"); @H_301_90@ Sex.setText(user.getSex()); @H_301_90@ Element IconId = User.addElement("IconId"); @H_301_90@ IconId.setText(user.getIconId()); @H_301_90@ Element City = User.addElement("City"); @H_301_90@ City.setText(user.getCity()); @H_301_90@ Element Password = User.addElement("Password"); @H_301_90@ Password.setText(user.getPassword()); @H_301_90@ Element OnLineState = User.addElement("OnLineState"); @H_301_90@ OnLineState.setText(user.getOnLineState()); @H_301_90@ Element LastLoginTime = User.addElement("LastLoginTime"); @H_301_90@ LastLoginTime.setText(user.getLastLoginTime()); @H_301_90@ Element RegisterTime = User.addElement("RegisterTime"); @H_301_90@ RegisterTime.setText(user.getRegisterTime()); @H_301_90@ @H_301_90@ @H_301_90@ //添加元素结束后往新的文件重新写入doc数据 @H_301_90@ XMLWriter output = new XMLWriter(new FileWriter( new File("F://users.xml") )); @H_301_90@ output.write(doc); @H_301_90@ //关闭输出 @H_301_90@ output.close(); @H_301_90@
@H_301_90@ } @H_301_90@ @H_301_90@ catch(DocumentException e){ @H_301_90@ e.printStackTrace(); @H_301_90@ } @H_301_90@
@H_301_90@ catch(IOException e){ @H_301_90@ e.printStackTrace(); @H_301_90@ } @H_301_90@ } @H_301_90@ } @H_301_90@
@H_301_90@ @H_301_90@ import java.io.File; @H_301_90@ import java.io.FileWriter; @H_301_90@ import java.io.IOException; @H_301_90@ import java.util.HashMap; @H_301_90@ import java.util.Iterator; @H_301_90@ import java.util.List; @H_301_90@ import java.util.Scanner; @H_301_90@ import java.util.Set; @H_301_90@
@H_301_90@ import org.dom4j.Attribute; @H_301_90@ import org.dom4j.Document; @H_301_90@ import org.dom4j.DocumentException; @H_301_90@ import org.dom4j.Element; @H_301_90@ import org.dom4j.io.SAXReader; @H_301_90@ import org.dom4j.io.XMLWriter; @H_301_90@
@H_301_90@ public class Delete { @H_301_90@
@H_301_90@ public static void delete(){ @H_301_90@ Scanner scan = new Scanner(System.in); @H_301_90@ String num = null; @H_301_90@ while(true){ @H_301_90@ System.out.println("请输入要删除用户ID号(5位)"); @H_301_90@ try{ @H_301_90@ num = scan.next(); @H_301_90@ HashMap<String,String> map = Query.startQuery(num); @H_301_90@ Set set = map.keySet(); @H_301_90@ for(Iterator iter = set.iterator();iter.hasNext();){ @H_301_90@ String key = (String)iter.next(); @H_301_90@ String value = map.get(key); @H_301_90@ System.out.println(key+":"+value); @H_301_90@ } @H_301_90@ //如果用户不存在,则不执行下面的操作,如果存在,则执行 @H_301_90@ if(map.size()>1){ @H_301_90@ Delete.toDelete(num); @H_301_90@ } @H_301_90@ break; @H_301_90@ }catch(Exception e){ @H_301_90@ e.printStackTrace(); @H_301_90@ } @H_301_90@ } @H_301_90@ } @H_301_90@ public static void toDelete(String num){ @H_301_90@ SAXReader reader = new SAXReader(); @H_301_90@ try { @H_301_90@ //得到user.xml的Document @H_301_90@ Document doc = reader.read(new File("F://user.xml")); @H_301_90@ //得到跟结点 @H_301_90@ Element root = doc.getRootElement(); @H_301_90@ //得到根节点下的所有user集合 @H_301_90@ List<Element> userList = doc.selectNodes("//TUser/user"); @H_301_90@ //得到迭代器 @H_301_90@ Iterator<Element> iter = userList.iterator(); @H_301_90@ while(iter.hasNext()){ @H_301_90@ //得到user元素 @H_301_90@ Element e = iter.next(); @H_301_90@ //得到这个user元素的userID @H_301_90@ Attribute att = e.attribute("userID"); @H_301_90@ //判断这个userID是不是我们想要的user @H_301_90@ if(num.equals(att.getText())){ @H_301_90@ //如果是,则把自己(e)从跟结点处删除 @H_301_90@ root.remove(e); @H_301_90@ } @H_301_90@ } @H_301_90@ //得到XML的输出 @H_301_90@ XMLWriter output; @H_301_90@ try { @H_301_90@ output = new XMLWriter(new FileWriter( new File("F://users.xml") )); @H_301_90@ //将内存中的doc写入到新文件当中 @H_301_90@ output.write(doc); @H_301_90@ //关闭输出 @H_301_90@ output.close(); @H_301_90@ System.out.println("该用户已被删除!"); @H_301_90@ } catch (IOException e) { @H_301_90@ e.printStackTrace(); @H_301_90@ } @H_301_90@ } catch (DocumentException e) { @H_301_90@ e.printStackTrace(); @H_301_90@ } @H_301_90@ } @H_301_90@ }

@H_301_90@ @H_301_90@ import java.io.File; @H_301_90@ import java.util.HashMap; @H_301_90@ import java.util.Iterator; @H_301_90@ import java.util.List; @H_301_90@ import java.util.Scanner; @H_301_90@ import java.util.Set; @H_301_90@
@H_301_90@ import org.dom4j.Attribute; @H_301_90@ import org.dom4j.Document; @H_301_90@ import org.dom4j.Element; @H_301_90@ import org.dom4j.io.SAXReader; @H_301_90@
@H_301_90@ public class Query { @H_301_90@ public static void getQuery(){ @H_301_90@ //定义输入 @H_301_90@ Scanner scan = new Scanner(System.in); @H_301_90@ String num = null; @H_301_90@ while(true){ @H_301_90@ System.out.println("请输入要查询用户ID号(5位)"); @H_301_90@ try{ @H_301_90@ //得到要查询用户ID @H_301_90@ num = scan.next(); @H_301_90@ //定义一个HashMap,用于输出这个用户的所有信息 @H_301_90@ HashMap<String,String> map = startQuery(num); @H_301_90@ Set set = map.keySet(); @H_301_90@ for(Iterator iter = set.iterator();iter.hasNext();){ @H_301_90@ String key = (String)iter.next(); @H_301_90@ String value = map.get(key); @H_301_90@ System.out.println(key+":"+value); @H_301_90@ } @H_301_90@
@H_301_90@ break; @H_301_90@ }catch(Exception e){ @H_301_90@ System.out.println("输入错误!请重新输入!"); @H_301_90@ } @H_301_90@ } @H_301_90@ } @H_301_90@ public static HashMap<String,String> startQuery(String num){ @H_301_90@ //定义一个reader和HashMap,HashMap是用来返回我们要查询的这个用户的信息的 @H_301_90@ SAXReader reader = new SAXReader(); @H_301_90@ HashMap<String,String> map = new HashMap<String,String>(); @H_301_90@ try { @H_301_90@ //得到user.xml的这个doc @H_301_90@ Document doc = reader.read(new File("F://user.xml")); @H_301_90@ //得到所有用户的一个集合userList @H_301_90@ List<Element> userList = doc.selectNodes("//TUser/user"); @H_301_90@ //得到迭代器, @H_301_90@ Iterator<Element> iter = userList.iterator(); @H_301_90@ while(iter.hasNext()){ @H_301_90@ //得到每一个user元素,进行判断 @H_301_90@ Element e = iter.next(); @H_301_90@ //得到这个user的ID @H_301_90@ Attribute att = e.attribute("userID"); @H_301_90@ //如果这个user的ID和我们查询的ID一致,则将其所有的信息放入到map当中 @H_301_90@ if(num.equals(att.getText())){ @H_301_90@ //得到这个user的所有子元素 @H_301_90@ List<Element> childElements = e.elements(); @H_301_90@ //得到所有子元素的迭代器 @H_301_90@ Iterator<Element> childIter = childElements.iterator(); @H_301_90@ //如果还有子元素,则 @H_301_90@ while(childIter.hasNext()){ @H_301_90@ //得到子元素,将其信息放入到map当中 @H_301_90@ Element childElement = childIter.next(); @H_301_90@ map.put(childElement.getQName().getName(),childElement.getText()); @H_301_90@ } @H_301_90@ } @H_301_90@ } @H_301_90@ }catch(Exception e){ @H_301_90@ System.out.println("读取城市失败!"); @H_301_90@ e.printStackTrace(); @H_301_90@ } @H_301_90@ //如果map为0,则说明没有查找到我们要的信息,则往map当中添加未找到信息 @H_301_90@ if(map.size()<1){ @H_301_90@ map.put("您查找的信息不存在",""); @H_301_90@ } @H_301_90@ return map; @H_301_90@ } @H_301_90@ } @H_301_90@
@H_301_90@ @H_301_90@ import java.io.File; @H_301_90@ import java.io.FileWriter; @H_301_90@ import java.io.IOException; @H_301_90@ import java.util.HashMap; @H_301_90@ import java.util.Iterator; @H_301_90@ import java.util.List; @H_301_90@ import java.util.Scanner; @H_301_90@ import java.util.Set; @H_301_90@
@H_301_90@ import org.dom4j.Attribute; @H_301_90@ import org.dom4j.Document; @H_301_90@ import org.dom4j.DocumentException; @H_301_90@ import org.dom4j.Element; @H_301_90@ import org.dom4j.io.SAXReader; @H_301_90@ import org.dom4j.io.XMLWriter; @H_301_90@
@H_301_90@ public class Update { @H_301_90@ public static void update(){ @H_301_90@ //定义输入字符串,即num(我们要修改的id名称),要修改的元素,和元素的值 @H_301_90@ Scanner scan = new Scanner(System.in); @H_301_90@ String num = null; @H_301_90@ Scanner scan1 = new Scanner(System.in); @H_301_90@ String element = null; @H_301_90@ Scanner scan2 = new Scanner(System.in); @H_301_90@ String elementValue = null; @H_301_90@ while(true){ @H_301_90@ System.out.println("请输入要修改用户ID号(5位)"); @H_301_90@ try{ @H_301_90@ num = scan.next(); @H_301_90@ //调用查询方法,将用户的各种信息显示出来 @H_301_90@ HashMap<String,String> map = Query.startQuery(num); @H_301_90@ Set set = map.keySet(); @H_301_90@ for(Iterator iter = set.iterator();iter.hasNext();){ @H_301_90@ String key = (String)iter.next(); @H_301_90@ String value = map.get(key); @H_301_90@ System.out.println(key+":"+value); @H_301_90@ } @H_301_90@ //如果用户不存在,则不执行下面的操作,如果存在,则执行 @H_301_90@ if(map.size()>1){ @H_301_90@ System.out.println("请输入你要修改的元素:"); @H_301_90@ element = scan1.next(); @H_301_90@ System.out.println("请输入你要修改元素的值:"); @H_301_90@ elementValue = scan2.next(); @H_301_90@ Update.updateUser(num,element,elementValue); @H_301_90@ } @H_301_90@ break; @H_301_90@ }catch(Exception e){ @H_301_90@ System.out.println("输入错误!请重新输入!"); @H_301_90@ } @H_301_90@ } @H_301_90@ } @H_301_90@ public static void updateUser(String num,String element,String value){ @H_301_90@ try { @H_301_90@ //得到user.xml文件,将其读取到doc当中 @H_301_90@ SAXReader reader = new SAXReader(); @H_301_90@ Document doc = reader.read(new File("F://user.xml")); @H_301_90@ //得到跟结点root @H_301_90@ Element root = doc.getRootElement(); @H_301_90@ //得到根节点TUser下的所有用户,将其存放到userList当中 @H_301_90@ List<Element> userList = doc.selectNodes("//TUser/user"); @H_301_90@ //得到可以访问所有用户的迭代器Iterator @H_301_90@ Iterator<Element> iter = userList.iterator(); @H_301_90@ //如果迭代器还有下一个,则取出来 @H_301_90@ while(iter.hasNext()){ @H_301_90@ //得到迭代器中下一个元素 @H_301_90@ Element user = iter.next(); @H_301_90@ //得到user元素的一个属性,即userID, @H_301_90@ Attribute userId = user.attribute("userID"); @H_301_90@ //判断这个user的属性值是否等于我们要修改的这个用户的ID,如果是,则取出来进行就该 @H_301_90@ if(num.equals(userId.getText())){ @H_301_90@ //通过user.element("子元素名")得到我们要修改的子元素 @H_301_90@ Element childElement = user.element(element); @H_301_90@ //修改子元素的text值 @H_301_90@ childElement.setText(value); @H_301_90@ } @H_301_90@ } @H_301_90@ //得到XML的输出 @H_301_90@ XMLWriter output; @H_301_90@ try { @H_301_90@ output = new XMLWriter(new FileWriter( new File("F://users.xml") )); @H_301_90@ //将内存中的doc写入到新文件当中 @H_301_90@ output.write(doc); @H_301_90@ //关闭输出 @H_301_90@ output.close(); @H_301_90@ } catch (IOException e) { @H_301_90@ e.printStackTrace(); @H_301_90@ } @H_301_90@ } catch (DocumentException e) { @H_301_90@ e.printStackTrace(); @H_301_90@ } @H_301_90@ } @H_301_90@
@H_301_90@ }


@H_301_90@ @H_301_90@ import java.util.Date; @H_301_90@ import java.util.Scanner; @H_301_90@
@H_301_90@ public class User { @H_301_90@
@H_301_90@ private String userID; @H_301_90@ private String UserName; @H_301_90@ private String DeptId; @H_301_90@ private String Sex; @H_301_90@ private String IconId; @H_301_90@ private String City; @H_301_90@ private String Password; @H_301_90@ private String OnLineState; @H_301_90@ private String LastLoginTime; @H_301_90@ private String RegisterTime; @H_301_90@ public String getUserID() { @H_301_90@ return userID; @H_301_90@ } @H_301_90@ public void setUserID(String userID) { @H_301_90@ this.userID = userID; @H_301_90@ } @H_301_90@ public String getUserName() { @H_301_90@ return UserName; @H_301_90@ } @H_301_90@ public void setUserName(String userName) { @H_301_90@ UserName = userName; @H_301_90@ } @H_301_90@ public String getDeptId() { @H_301_90@ return DeptId; @H_301_90@ } @H_301_90@ public void setDeptId(String deptId) { @H_301_90@ DeptId = deptId; @H_301_90@ } @H_301_90@ public String getSex() { @H_301_90@ return Sex; @H_301_90@ } @H_301_90@ public void setSex(String sex) { @H_301_90@ Sex = sex; @H_301_90@ } @H_301_90@ public String getIconId() { @H_301_90@ return IconId; @H_301_90@ } @H_301_90@ public void setIconId(String iconId) { @H_301_90@ IconId = iconId; @H_301_90@ } @H_301_90@ public String getCity() { @H_301_90@ return City; @H_301_90@ } @H_301_90@ public void setCity(String city) { @H_301_90@ City = city; @H_301_90@ } @H_301_90@ public String getPassword() { @H_301_90@ return Password; @H_301_90@ } @H_301_90@ public void setPassword(String password) { @H_301_90@ Password = password; @H_301_90@ } @H_301_90@ public String getOnLineState() { @H_301_90@ return OnLineState; @H_301_90@ } @H_301_90@ public void setOnLineState(String onLineState) { @H_301_90@ OnLineState = onLineState; @H_301_90@ } @H_301_90@ public String getLastLoginTime() { @H_301_90@ return LastLoginTime; @H_301_90@ } @H_301_90@ public void setLastLoginTime(String lastLoginTime) { @H_301_90@ LastLoginTime = lastLoginTime; @H_301_90@ } @H_301_90@ public String getRegisterTime() { @H_301_90@ return RegisterTime; @H_301_90@ } @H_301_90@ public void setRegisterTime(String registerTime) { @H_301_90@ RegisterTime = registerTime; @H_301_90@ } @H_301_90@ public void createUser(){ @H_301_90@ Scanner scan = new Scanner(System.in); @H_301_90@ String message = null; @H_301_90@ System.out.println("请输入userID"); @H_301_90@ message = scan.next(); @H_301_90@ this.setUserID(message); @H_301_90@ System.out.println("请输入UserName"); @H_301_90@ message = scan.next(); @H_301_90@ this.setUserName(message); @H_301_90@ System.out.println("请输入DeptId"); @H_301_90@ message = scan.next(); @H_301_90@ this.setDeptId(message); @H_301_90@ System.out.println("请输入Sex"); @H_301_90@ message = scan.next(); @H_301_90@ this.setSex(message); @H_301_90@ System.out.println("请输入IconId"); @H_301_90@ message = scan.next(); @H_301_90@ this.setIconId(message); @H_301_90@ System.out.println("请输入City"); @H_301_90@ message = scan.next(); @H_301_90@ this.setCity(message); @H_301_90@ System.out.println("请输入Password"); @H_301_90@ message = scan.next(); @H_301_90@ this.setPassword(message); @H_301_90@ System.out.println("请输入OnLineState"); @H_301_90@ message = scan.next(); @H_301_90@ this.setOnLineState(message); @H_301_90@
@H_301_90@ this.setLastLoginTime(new Date().toLocaleString()); @H_301_90@ this.setRegisterTime(new Date().toLocaleString()); @H_301_90@ } @H_301_90@ }

@H_301_90@ 第一步:查询用户 @H_301_90@

(在console中显示用户的信息)

@H_301_90@ 第二步:添加用户
@H_301_90@ (似乎忘记添加用户名到xml中了,不过上面的代码是有的,我发现错误后就改了) @H_301_90@



大家可以查看在users.xml后添加的新元素

@H_301_90@ 第三步:修改用户
@H_301_90@


这是修改后的xml,City从福州变为德化


第四步:删除用户:

删除后xml文件中就没有该用户的信息了

猜你在找的XML相关文章