如何使用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> ???<Sex>男</Sex> ???<IconId>11</IconId> ???<City>福州</City> ???<Password>123</Password> ???<OnlineState>0</OnlineState> ???<LastLoginTime>2012-05-09 16:22:44</LastLoginTime> ???<RegisterTime>2007-01-11 16:18:21</RegisterTime> ?</user> </TUser>
我們要做的是對這個xml文件進行增刪改操作: 共有六個類:
Computer.java ?系統開始
Add.java ??往xml添加一個用戶的類的具體操作
Delete.java ??從xml中刪除一個用戶的具體操作
Query.java ???從xml中查詢一個用戶的具體操作
Update.java ??更新用戶的信息
User.java ???這是一個用戶類,即一個xml中用戶的具體類,此處用到了java的對象思想,把一個數據對象作為一個User,從而對這個User進行操作。
user.xml文件是放在F盤目錄下哈;更改后是在F盤目錄下產生出users.xml 在我們實際的開發、作為數據庫的時候,讀取得文件名就是我們產生的文件名,是在同一個文件下進行更改
import java.util.Scanner;
import MySql.DataBaseConduct;
public class Computer { public Computer(){ //開始整個系統,判斷用戶使用的是哪種數據庫 System.out.println("數據庫選擇"); System.out.println("輸入1為使用xml數據庫"); System.out.println("輸入2為使用mySql數據庫"); Scanner scan = new Scanner(System.in); int choice; while(true){ try{ //如果用戶輸入的數值不是1或者2,則出錯 choice = scan.nextInt(); if(choice!=1&&choice!=2){ System.out.println("輸入錯誤!請重新輸入"); }else{ //如果輸入的正確,則啟動! //如果輸入的是1,則啟用XML作為數據庫,否則,啟用MySql作為數據庫 if(choice==1){ this.startXML(); }else{ this.startMySql(); } break; } }catch(Exception e){ System.out.println("輸入錯誤!請重新輸入"); } } } public void startXML(){ System.out.println("歡迎使用該系統!"); Scanner scan = new Scanner(System.in); int num = 0; while(true){ System.out.println("請輸入要執行的操作!"); System.out.println("1:查詢用戶"); System.out.println("2:增加用戶"); System.out.println("3:修改用戶"); System.out.println("4:刪除用戶信息"); try{ num = scan.nextInt(); if(num<1||num>4){ System.out.println("輸入錯誤!請重新輸入"); continue; } }catch(Exception e){ System.out.println("輸入錯誤!"); } switch(num){ case(1):Query.getQuery();continue;//查詢用戶操作 case(2):Add.add();continue;//添加用戶操作 case(3):Update.update();continue;//更新用戶操作 case(4):Delete.delete();continue;//刪除用戶操作 default:System.out.println("輸入錯誤!請重新輸入!");continue; } } } public void startMySql(){ DataBaseConduct mySql = new DataBaseConduct(); mySql.choose(); } public static void main(String[] args) { //啟動系統 Computer com = new Computer(); } }
import java.io.File; import java.io.FileWriter; import java.io.IOException;
import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;
public class Add { public static void add(){ while(true){ try{ //new出一個User,調用user.createUser()方法來填寫這個用戶的各種信息 User user = new User(); System.out.println("0"); user.createUser(); //調用添加用戶,將user作為參數傳遞 Add.addUser(user); break; }catch(Exception e){ System.out.println("輸入錯誤!請重新輸入!"); } } } public static void addUser(User user){ try{ //讀取文件 SAXReader saxReader = new SAXReader(); ?Document doc = saxReader.read(new File("F://user.xml")); ?//得到跟結點root ?Element root = doc.getRootElement(); ?//往根節點添加user元素 ?Element User = root.addElement("user"); ?//設置user的userID ?User.addAttribute("userID", user.getUserID()); ?//往user添加各種子元素和設置值 ?Element UserName = User.addElement("UserName"); ?UserName.setText(user.getUserName()); ?Element DeptId = User.addElement("DeptId"); ?DeptId.setText(user.getDeptId()); ?Element Sex = User.addElement("Sex"); ?Sex.setText(user.getSex()); ?Element IconId = User.addElement("IconId"); ?IconId.setText(user.getIconId()); ?Element City = User.addElement("City"); ?City.setText(user.getCity()); ?Element Password = User.addElement("Password"); ?Password.setText(user.getPassword()); ?Element OnLineState = User.addElement("OnLineState"); ?OnLineState.setText(user.getOnLineState()); ?Element LastLoginTime = User.addElement("LastLoginTime"); ?LastLoginTime.setText(user.getLastLoginTime()); ?Element RegisterTime = User.addElement("RegisterTime"); ?RegisterTime.setText(user.getRegisterTime()); ?? ? ??//添加元素結束后往新的文件重新寫入doc數據 ??XMLWriter output = new XMLWriter(new FileWriter( new File("F://users.xml") )); ??output.write(doc); ??//關閉輸出流 ??output.close();
} ? catch(DocumentException e){ e.printStackTrace(); }
catch(IOException e){ e.printStackTrace(); } } }
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Scanner; import java.util.Set;
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;
public class Delete {
public static void delete(){ Scanner scan = new Scanner(System.in); String num = null; while(true){ System.out.println("請輸入要刪除的用戶ID號(5位)"); try{ num = scan.next(); HashMap<String,String> map = Query.startQuery(num); Set set = ?map.keySet(); for(Iterator iter = set.iterator();iter.hasNext();){ String key ?= (String)iter.next(); String value = map.get(key); System.out.println(key+":"+value); } //如果用戶不存在,則不執行下面的操作,如果存在,則執行 if(map.size()>1){ Delete.toDelete(num); } break; }catch(Exception e){ e.printStackTrace(); } } } public static void toDelete(String num){ SAXReader reader = new SAXReader(); try { //得到user.xml的Document Document doc = reader.read(new File("F://user.xml")); //得到跟結點 Element root = doc.getRootElement(); //得到根節點下的所有user集合 List<Element> userList = doc.selectNodes("//TUser/user"); //得到迭代器 Iterator<Element> iter = userList.iterator(); while(iter.hasNext()){ //得到user元素 Element e = iter.next(); //得到這個user元素的userID Attribute att = e.attribute("userID"); //判斷這個userID是不是我們想要的user if(num.equals(att.getText())){ //如果是,則把自己(e)從跟結點處刪除 root.remove(e); } } //得到XML的輸出流 XMLWriter output; try { output = new XMLWriter(new FileWriter( new File("F://users.xml") )); //將內存中的doc寫入到新文件當中 output.write(doc); //關閉輸出流 output.close(); System.out.println("該用戶已被刪除!"); } catch (IOException e) { e.printStackTrace(); } } catch (DocumentException e) { e.printStackTrace(); } } }
import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Scanner; import java.util.Set;
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;
public class Query { public static void getQuery(){ //定義輸入 Scanner scan = new Scanner(System.in); String num = null; while(true){ System.out.println("請輸入要查詢的用戶ID號(5位)"); try{ //得到要查詢的用戶ID num = scan.next(); //定義一個HashMap,用于輸出這個用戶的所有信息 HashMap<String,String> map = startQuery(num); Set set = ?map.keySet(); for(Iterator iter = set.iterator();iter.hasNext();){ String key ?= (String)iter.next(); String value = map.get(key); System.out.println(key+":"+value); }
break; }catch(Exception e){ System.out.println("輸入錯誤!請重新輸入!"); } } } public static HashMap<String,String> startQuery(String num){ //定義一個reader和HashMap,HashMap是用來返回我們要查詢的這個用戶的信息的 SAXReader reader = new SAXReader(); HashMap<String,String> map = new HashMap<String,String>(); try { //得到user.xml的這個doc Document doc = reader.read(new File("F://user.xml")); //得到所有用戶的一個集合userList List<Element> userList = doc.selectNodes("//TUser/user"); //得到迭代器, Iterator<Element> iter = userList.iterator(); while(iter.hasNext()){ //得到每一個user元素,進行判斷 Element e = iter.next(); //得到這個user的ID Attribute att = e.attribute("userID"); //如果這個user的ID和我們查詢的ID一致,則將其所有的信息放入到map當中 if(num.equals(att.getText())){ //得到這個user的所有子元素 List<Element> childElements = e.elements(); //得到所有子元素的迭代器 Iterator<Element> childIter = childElements.iterator(); //如果還有子元素,則 while(childIter.hasNext()){ //得到子元素,將其信息放入到map當中 Element childElement = childIter.next(); map.put(childElement.getQName().getName(), childElement.getText()); } } } }catch(Exception e){ System.out.println("讀取城市失敗!"); e.printStackTrace(); } //如果map為0,則說明沒有查找到我們要的信息,則往map當中添加未找到信息 if(map.size()<1){ map.put("您查找的信息不存在", ""); } return map; } }
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Scanner; import java.util.Set;
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;
public class Update { public static void update(){ //定義輸入字符串,即num(我們要修改的id名稱),要修改的元素,和元素的值 Scanner scan = new Scanner(System.in); String num = null; Scanner scan1 = new Scanner(System.in); String element = null; Scanner scan2 = new Scanner(System.in); String elementValue = null; while(true){ System.out.println("請輸入要修改的用戶ID號(5位)"); try{ num = scan.next(); //調用查詢方法,將用戶的各種信息顯示出來 HashMap<String,String> map = Query.startQuery(num); Set set = ?map.keySet(); for(Iterator iter = set.iterator();iter.hasNext();){ String key ?= (String)iter.next(); String value = map.get(key); System.out.println(key+":"+value); } //如果用戶不存在,則不執行下面的操作,如果存在,則執行 if(map.size()>1){ System.out.println("請輸入你要修改的元素:"); element = scan1.next(); System.out.println("請輸入你要修改元素的值:"); elementValue = scan2.next(); Update.updateUser(num,element, elementValue); } break; }catch(Exception e){ System.out.println("輸入錯誤!請重新輸入!"); } } } public static void updateUser(String num,String element,String value){ try { //得到user.xml文件,將其讀取到doc當中 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("F://user.xml")); //得到跟結點root Element root = doc.getRootElement(); //得到根節點TUser下的所有用戶,將其存放到userList當中 List<Element> userList = doc.selectNodes("//TUser/user"); //得到可以訪問所有用戶的迭代器Iterator Iterator<Element> iter = userList.iterator(); //如果迭代器還有下一個,則取出來 while(iter.hasNext()){ //得到迭代器中下一個元素 Element user = iter.next(); //得到user元素的一個屬性,即userID, Attribute userId = user.attribute("userID"); //判斷這個user的屬性值是否等于我們要修改的這個用戶的ID,如果是,則取出來進行就該 if(num.equals(userId.getText())){ //通過user.element("子元素名")得到我們要修改的子元素 Element childElement = user.element(element); //修改子元素的text值 childElement.setText(value); } } //得到XML的輸出流 XMLWriter output; try { output = new XMLWriter(new FileWriter( new File("F://users.xml") )); //將內存中的doc寫入到新文件當中 output.write(doc); //關閉輸出流 output.close(); } catch (IOException e) { e.printStackTrace(); } } catch (DocumentException e) { e.printStackTrace(); } }
}
import java.util.Date; import java.util.Scanner;
public class User {
private String userID; private String UserName; private String DeptId; private String Sex; private String IconId; private String City; private String Password; private String OnLineState; private String LastLoginTime; private String RegisterTime; public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getUserName() { return UserName; } public void setUserName(String userName) { UserName = userName; } public String getDeptId() { return DeptId; } public void setDeptId(String deptId) { DeptId = deptId; } public String getSex() { return Sex; } public void setSex(String sex) { Sex = sex; } public String getIconId() { return IconId; } public void setIconId(String iconId) { IconId = iconId; } public String getCity() { return City; } public void setCity(String city) { City = city; } public String getPassword() { return Password; } public void setPassword(String password) { Password = password; } public String getOnLineState() { return OnLineState; } public void setOnLineState(String onLineState) { OnLineState = onLineState; } public String getLastLoginTime() { return LastLoginTime; } public void setLastLoginTime(String lastLoginTime) { LastLoginTime = lastLoginTime; } public String getRegisterTime() { return RegisterTime; } public void setRegisterTime(String registerTime) { RegisterTime = registerTime; } public void createUser(){ Scanner scan = new Scanner(System.in); String message = null; System.out.println("請輸入userID"); message = scan.next(); this.setUserID(message); System.out.println("請輸入UserName"); message = scan.next(); this.setUserName(message); System.out.println("請輸入DeptId"); message = scan.next(); this.setDeptId(message); System.out.println("請輸入Sex"); message = scan.next(); this.setSex(message); System.out.println("請輸入IconId"); message = scan.next(); this.setIconId(message); System.out.println("請輸入City"); message = scan.next(); this.setCity(message); System.out.println("請輸入Password"); message = scan.next(); this.setPassword(message); System.out.println("請輸入OnLineState"); message = scan.next(); this.setOnLineState(message);
this.setLastLoginTime(new Date().toLocaleString()); this.setRegisterTime(new Date().toLocaleString()); ? } }
第一步:查詢用戶:
(在console中顯示出用戶的信息)
第二步:添加用戶: (似乎忘記添加用戶名到xml中了,不過上面的代碼是有的,我發現錯誤后就改了)
大家可以查看在users.xml后添加的新元素
第三步:修改用戶:
這是修改后的xml,City從福州變為德化
第四步:刪除用戶:
刪除后xml文件中就沒有該用戶的信息了
我們要做的是對這個xml文件進行增刪改操作: 共有六個類:
Computer.java ?系統開始
Add.java ??往xml添加一個用戶的類的具體操作
Delete.java ??從xml中刪除一個用戶的具體操作
Query.java ???從xml中查詢一個用戶的具體操作
Update.java ??更新用戶的信息
User.java ???這是一個用戶類,即一個xml中用戶的具體類,此處用到了java的對象思想,把一個數據對象作為一個User,從而對這個User進行操作。
user.xml文件是放在F盤目錄下哈;更改后是在F盤目錄下產生出users.xml 在我們實際的開發、作為數據庫的時候,讀取得文件名就是我們產生的文件名,是在同一個文件下進行更改
import java.util.Scanner;
import MySql.DataBaseConduct;
public class Computer { public Computer(){ //開始整個系統,判斷用戶使用的是哪種數據庫 System.out.println("數據庫選擇"); System.out.println("輸入1為使用xml數據庫"); System.out.println("輸入2為使用mySql數據庫"); Scanner scan = new Scanner(System.in); int choice; while(true){ try{ //如果用戶輸入的數值不是1或者2,則出錯 choice = scan.nextInt(); if(choice!=1&&choice!=2){ System.out.println("輸入錯誤!請重新輸入"); }else{ //如果輸入的正確,則啟動! //如果輸入的是1,則啟用XML作為數據庫,否則,啟用MySql作為數據庫 if(choice==1){ this.startXML(); }else{ this.startMySql(); } break; } }catch(Exception e){ System.out.println("輸入錯誤!請重新輸入"); } } } public void startXML(){ System.out.println("歡迎使用該系統!"); Scanner scan = new Scanner(System.in); int num = 0; while(true){ System.out.println("請輸入要執行的操作!"); System.out.println("1:查詢用戶"); System.out.println("2:增加用戶"); System.out.println("3:修改用戶"); System.out.println("4:刪除用戶信息"); try{ num = scan.nextInt(); if(num<1||num>4){ System.out.println("輸入錯誤!請重新輸入"); continue; } }catch(Exception e){ System.out.println("輸入錯誤!"); } switch(num){ case(1):Query.getQuery();continue;//查詢用戶操作 case(2):Add.add();continue;//添加用戶操作 case(3):Update.update();continue;//更新用戶操作 case(4):Delete.delete();continue;//刪除用戶操作 default:System.out.println("輸入錯誤!請重新輸入!");continue; } } } public void startMySql(){ DataBaseConduct mySql = new DataBaseConduct(); mySql.choose(); } public static void main(String[] args) { //啟動系統 Computer com = new Computer(); } }
import java.io.File; import java.io.FileWriter; import java.io.IOException;
import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;
public class Add { public static void add(){ while(true){ try{ //new出一個User,調用user.createUser()方法來填寫這個用戶的各種信息 User user = new User(); System.out.println("0"); user.createUser(); //調用添加用戶,將user作為參數傳遞 Add.addUser(user); break; }catch(Exception e){ System.out.println("輸入錯誤!請重新輸入!"); } } } public static void addUser(User user){ try{ //讀取文件 SAXReader saxReader = new SAXReader(); ?Document doc = saxReader.read(new File("F://user.xml")); ?//得到跟結點root ?Element root = doc.getRootElement(); ?//往根節點添加user元素 ?Element User = root.addElement("user"); ?//設置user的userID ?User.addAttribute("userID", user.getUserID()); ?//往user添加各種子元素和設置值 ?Element UserName = User.addElement("UserName"); ?UserName.setText(user.getUserName()); ?Element DeptId = User.addElement("DeptId"); ?DeptId.setText(user.getDeptId()); ?Element Sex = User.addElement("Sex"); ?Sex.setText(user.getSex()); ?Element IconId = User.addElement("IconId"); ?IconId.setText(user.getIconId()); ?Element City = User.addElement("City"); ?City.setText(user.getCity()); ?Element Password = User.addElement("Password"); ?Password.setText(user.getPassword()); ?Element OnLineState = User.addElement("OnLineState"); ?OnLineState.setText(user.getOnLineState()); ?Element LastLoginTime = User.addElement("LastLoginTime"); ?LastLoginTime.setText(user.getLastLoginTime()); ?Element RegisterTime = User.addElement("RegisterTime"); ?RegisterTime.setText(user.getRegisterTime()); ?? ? ??//添加元素結束后往新的文件重新寫入doc數據 ??XMLWriter output = new XMLWriter(new FileWriter( new File("F://users.xml") )); ??output.write(doc); ??//關閉輸出流 ??output.close();
} ? catch(DocumentException e){ e.printStackTrace(); }
catch(IOException e){ e.printStackTrace(); } } }
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Scanner; import java.util.Set;
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;
public class Delete {
public static void delete(){ Scanner scan = new Scanner(System.in); String num = null; while(true){ System.out.println("請輸入要刪除的用戶ID號(5位)"); try{ num = scan.next(); HashMap<String,String> map = Query.startQuery(num); Set set = ?map.keySet(); for(Iterator iter = set.iterator();iter.hasNext();){ String key ?= (String)iter.next(); String value = map.get(key); System.out.println(key+":"+value); } //如果用戶不存在,則不執行下面的操作,如果存在,則執行 if(map.size()>1){ Delete.toDelete(num); } break; }catch(Exception e){ e.printStackTrace(); } } } public static void toDelete(String num){ SAXReader reader = new SAXReader(); try { //得到user.xml的Document Document doc = reader.read(new File("F://user.xml")); //得到跟結點 Element root = doc.getRootElement(); //得到根節點下的所有user集合 List<Element> userList = doc.selectNodes("//TUser/user"); //得到迭代器 Iterator<Element> iter = userList.iterator(); while(iter.hasNext()){ //得到user元素 Element e = iter.next(); //得到這個user元素的userID Attribute att = e.attribute("userID"); //判斷這個userID是不是我們想要的user if(num.equals(att.getText())){ //如果是,則把自己(e)從跟結點處刪除 root.remove(e); } } //得到XML的輸出流 XMLWriter output; try { output = new XMLWriter(new FileWriter( new File("F://users.xml") )); //將內存中的doc寫入到新文件當中 output.write(doc); //關閉輸出流 output.close(); System.out.println("該用戶已被刪除!"); } catch (IOException e) { e.printStackTrace(); } } catch (DocumentException e) { e.printStackTrace(); } } }
import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Scanner; import java.util.Set;
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;
public class Query { public static void getQuery(){ //定義輸入 Scanner scan = new Scanner(System.in); String num = null; while(true){ System.out.println("請輸入要查詢的用戶ID號(5位)"); try{ //得到要查詢的用戶ID num = scan.next(); //定義一個HashMap,用于輸出這個用戶的所有信息 HashMap<String,String> map = startQuery(num); Set set = ?map.keySet(); for(Iterator iter = set.iterator();iter.hasNext();){ String key ?= (String)iter.next(); String value = map.get(key); System.out.println(key+":"+value); }
break; }catch(Exception e){ System.out.println("輸入錯誤!請重新輸入!"); } } } public static HashMap<String,String> startQuery(String num){ //定義一個reader和HashMap,HashMap是用來返回我們要查詢的這個用戶的信息的 SAXReader reader = new SAXReader(); HashMap<String,String> map = new HashMap<String,String>(); try { //得到user.xml的這個doc Document doc = reader.read(new File("F://user.xml")); //得到所有用戶的一個集合userList List<Element> userList = doc.selectNodes("//TUser/user"); //得到迭代器, Iterator<Element> iter = userList.iterator(); while(iter.hasNext()){ //得到每一個user元素,進行判斷 Element e = iter.next(); //得到這個user的ID Attribute att = e.attribute("userID"); //如果這個user的ID和我們查詢的ID一致,則將其所有的信息放入到map當中 if(num.equals(att.getText())){ //得到這個user的所有子元素 List<Element> childElements = e.elements(); //得到所有子元素的迭代器 Iterator<Element> childIter = childElements.iterator(); //如果還有子元素,則 while(childIter.hasNext()){ //得到子元素,將其信息放入到map當中 Element childElement = childIter.next(); map.put(childElement.getQName().getName(), childElement.getText()); } } } }catch(Exception e){ System.out.println("讀取城市失敗!"); e.printStackTrace(); } //如果map為0,則說明沒有查找到我們要的信息,則往map當中添加未找到信息 if(map.size()<1){ map.put("您查找的信息不存在", ""); } return map; } }
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Scanner; import java.util.Set;
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;
public class Update { public static void update(){ //定義輸入字符串,即num(我們要修改的id名稱),要修改的元素,和元素的值 Scanner scan = new Scanner(System.in); String num = null; Scanner scan1 = new Scanner(System.in); String element = null; Scanner scan2 = new Scanner(System.in); String elementValue = null; while(true){ System.out.println("請輸入要修改的用戶ID號(5位)"); try{ num = scan.next(); //調用查詢方法,將用戶的各種信息顯示出來 HashMap<String,String> map = Query.startQuery(num); Set set = ?map.keySet(); for(Iterator iter = set.iterator();iter.hasNext();){ String key ?= (String)iter.next(); String value = map.get(key); System.out.println(key+":"+value); } //如果用戶不存在,則不執行下面的操作,如果存在,則執行 if(map.size()>1){ System.out.println("請輸入你要修改的元素:"); element = scan1.next(); System.out.println("請輸入你要修改元素的值:"); elementValue = scan2.next(); Update.updateUser(num,element, elementValue); } break; }catch(Exception e){ System.out.println("輸入錯誤!請重新輸入!"); } } } public static void updateUser(String num,String element,String value){ try { //得到user.xml文件,將其讀取到doc當中 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("F://user.xml")); //得到跟結點root Element root = doc.getRootElement(); //得到根節點TUser下的所有用戶,將其存放到userList當中 List<Element> userList = doc.selectNodes("//TUser/user"); //得到可以訪問所有用戶的迭代器Iterator Iterator<Element> iter = userList.iterator(); //如果迭代器還有下一個,則取出來 while(iter.hasNext()){ //得到迭代器中下一個元素 Element user = iter.next(); //得到user元素的一個屬性,即userID, Attribute userId = user.attribute("userID"); //判斷這個user的屬性值是否等于我們要修改的這個用戶的ID,如果是,則取出來進行就該 if(num.equals(userId.getText())){ //通過user.element("子元素名")得到我們要修改的子元素 Element childElement = user.element(element); //修改子元素的text值 childElement.setText(value); } } //得到XML的輸出流 XMLWriter output; try { output = new XMLWriter(new FileWriter( new File("F://users.xml") )); //將內存中的doc寫入到新文件當中 output.write(doc); //關閉輸出流 output.close(); } catch (IOException e) { e.printStackTrace(); } } catch (DocumentException e) { e.printStackTrace(); } }
}
import java.util.Date; import java.util.Scanner;
public class User {
private String userID; private String UserName; private String DeptId; private String Sex; private String IconId; private String City; private String Password; private String OnLineState; private String LastLoginTime; private String RegisterTime; public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getUserName() { return UserName; } public void setUserName(String userName) { UserName = userName; } public String getDeptId() { return DeptId; } public void setDeptId(String deptId) { DeptId = deptId; } public String getSex() { return Sex; } public void setSex(String sex) { Sex = sex; } public String getIconId() { return IconId; } public void setIconId(String iconId) { IconId = iconId; } public String getCity() { return City; } public void setCity(String city) { City = city; } public String getPassword() { return Password; } public void setPassword(String password) { Password = password; } public String getOnLineState() { return OnLineState; } public void setOnLineState(String onLineState) { OnLineState = onLineState; } public String getLastLoginTime() { return LastLoginTime; } public void setLastLoginTime(String lastLoginTime) { LastLoginTime = lastLoginTime; } public String getRegisterTime() { return RegisterTime; } public void setRegisterTime(String registerTime) { RegisterTime = registerTime; } public void createUser(){ Scanner scan = new Scanner(System.in); String message = null; System.out.println("請輸入userID"); message = scan.next(); this.setUserID(message); System.out.println("請輸入UserName"); message = scan.next(); this.setUserName(message); System.out.println("請輸入DeptId"); message = scan.next(); this.setDeptId(message); System.out.println("請輸入Sex"); message = scan.next(); this.setSex(message); System.out.println("請輸入IconId"); message = scan.next(); this.setIconId(message); System.out.println("請輸入City"); message = scan.next(); this.setCity(message); System.out.println("請輸入Password"); message = scan.next(); this.setPassword(message); System.out.println("請輸入OnLineState"); message = scan.next(); this.setOnLineState(message);
this.setLastLoginTime(new Date().toLocaleString()); this.setRegisterTime(new Date().toLocaleString()); ? } }
第一步:查詢用戶:
(在console中顯示出用戶的信息)
第二步:添加用戶: (似乎忘記添加用戶名到xml中了,不過上面的代碼是有的,我發現錯誤后就改了)
大家可以查看在users.xml后添加的新元素
第三步:修改用戶:
這是修改后的xml,City從福州變為德化
第四步:刪除用戶:
刪除后xml文件中就沒有該用戶的信息了
總結
以上是生活随笔為你收集整理的如何使用XML作为小型数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式中的开闭原则
- 下一篇: Java使用简单工厂模式对面向接口编程模