使用前文的XML文檔內容。java
一、app
package xml; public class student { private int stuno; private String name; private String gender; private int scores; public student() { super(); } public student(int stuno, String name, String gender, int scores) { super(); this.stuno = stuno; this.name = name; this.gender = gender; this.scores = scores; } public int getStuno() { return stuno; } public void setStuno(int stuno) { this.stuno = stuno; } 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 getScores() { return scores; } public void setScores(int scores) { this.scores = scores; } }
二、dom
package xml; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.xml.sax.SAXException; //讀取保存XML類 public class loadSaveXml { // 根據傳入的URL路徑讀取整個XML文檔的方法,返回DOC public static Document loadXml(String url){ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; Document doc = null; try { db = dbf.newDocumentBuilder(); doc = db.parse(url); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return doc; } public static boolean saveXml(String url,Document doc){ boolean flag = false; // 建立保存XML工廠 TransformerFactory tff = TransformerFactory.newInstance(); try { // 經過保存工廠建立Transformer對象 Transformer tf = tff.newTransformer(); // 實例化DOMSource,將doc保存到DOMSource中 DOMSource ds = new DOMSource(doc); tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); // 經過文件輸出流將 StreamResult sr = new StreamResult(new FileOutputStream(url)); tf.transform(ds, sr); // flag=true; } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } return flag; } }
三、eclipse
package xml; import java.util.ArrayList; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; //對XML內容操做的類 public class xmlWork { public ArrayList<student> SelectAll(String url){ ArrayList<student> al = new ArrayList<student>(); Document doc = loadSaveXml.loadXml(url); NodeList students=doc.getElementsByTagName("student"); for(int i = 0 ;i <students.getLength();i ++){ Element student = (Element)students.item(i); int stuno=Integer.parseInt(student.getAttribute("stuno")); String name = student.getElementsByTagName("name").item(0).getTextContent(); String gender = student.getElementsByTagName("gender").item(0).getTextContent(); int scores=Integer.parseInt(student.getElementsByTagName("scores").item(0).getTextContent()); student stu = new student(stuno,name,gender,scores); al.add(stu); } return al; } // 根據編號查找學生是否存在:true表示存在,false表示不存在 public boolean isStu(String url,int stunoid){ boolean flag = false; Document doc = loadSaveXml.loadXml(url); NodeList students=doc.getElementsByTagName("student"); for(int i = 0 ;i <students.getLength();i ++){ Element student = (Element)students.item(i); int stunoid1=Integer.parseInt(student.getAttribute("stuno")); if(stunoid1 == stunoid){ flag=true; break; } } return flag; } public void AddStu(String url,student stu){ Document doc=loadSaveXml.loadXml(url); // 經過getDocumentElement獲取所有doc的節點的元素 Element students=doc.getDocumentElement(); // 建立student節點元素 Element student=doc.createElement("student"); // 設置student節點元素的屬性 student.setAttribute("stuno", ((Integer)stu.getStuno()).toString()); // 將新建立的student放入到student節點中 students.appendChild(student); // 建立name節點元素 Element name = doc.createElement("name"); // 爲name文本域賦值 name.setTextContent(stu.getName()); // 將name節點添加到student節點元素中 student.appendChild(name); // 建立gender節點元素 Element gender = doc.createElement("gender"); // 爲gender文本域賦值 gender.setTextContent(stu.getGender()); // 將gender節點添加到student節點元素中 student.appendChild(gender); // 建立scores節點元素 Element scores = doc.createElement("scores"); // 爲scores文本域賦值 scores.setTextContent(((Integer)(stu.getScores())).toString()); // 將scores節點添加到student節點元素中 student.appendChild(scores); // 將doc保存到XML文件中 loadSaveXml.saveXml(url,doc); } // XML的修改操做 public void UpdateStu(String url,student stu){ Document doc = loadSaveXml.loadXml(url); NodeList students=doc.getElementsByTagName("student"); for(int i = 0 ;i <students.getLength();i ++){ Element student = (Element)students.item(i); int stuno=Integer.parseInt(student.getAttribute("stuno")); if(stu.getStuno()==stuno){ student.getElementsByTagName("name").item(0).setTextContent(stu.getName()); student.getElementsByTagName("gender").item(0).setTextContent(stu.getGender()); student.getElementsByTagName("scores").item(0).setTextContent(((Integer)stu.getScores()).toString()); break; } } loadSaveXml.saveXml(url, doc); } // XML的刪除操做 public void DelStu(String url,int stuno){ Document doc = loadSaveXml.loadXml(url); Element studente1=doc.getDocumentElement();//獲取全部節點 NodeList students=doc.getElementsByTagName("student"); for(int i = 0 ;i <students.getLength();i ++){ Element student = (Element)students.item(i); int stunoid=Integer.parseInt(student.getAttribute("stuno")); if(stunoid==stuno){ studente1.removeChild(student); break; } } loadSaveXml.saveXml(url, doc); } }
四、ide
package xml; import java.util.ArrayList; import java.util.Scanner; //提示用戶輸入及顯示信息類 public class studentMenu { xmlWork xmlwork = new xmlWork(); Scanner input = new Scanner(System.in); String url = "D:\\eclipse\\eclipse-jee-neon-R-win32\\workspace\\study\\src\\xml\\NewFile.xml"; public void showMenu(){ System.out.println("=======歡迎登陸學員管理系統======"); System.out.println("請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出"); int num = input.nextInt(); switch (num) { case 1: selStu(); showMenu(); break; case 2: addStu(); showMenu(); break; case 3: updateStu(); showMenu(); break; case 4: delStu(); showMenu(); break; case 5: System.out.println("您已退出系統!"); System.exit(0); break; default: System.out.println("請選擇正確的操做:"); break; } } // 查詢的方法 private void selStu(){ ArrayList<student> al = xmlwork.SelectAll(url); System.out.println("學生的信息爲:\n學生編號\t學生姓名\t學生性別\t學生分數"); for(student s:al){ System.out.println(s.getStuno()+" "+s.getName()+" "+s.getGender()+" "+s.getScores()); } } // 添加學生的方法 private void addStu(){ System.out.println("請輸入學生編號:"); int stuno = input.nextInt(); // 調用方法判斷該編號的學生是否存在 if(xmlwork.isStu(url, stuno)){ // 找到的狀況提示錯誤 System.out.println("該學生編號已經存在請從新輸入!"); addStu(); }else{ // 沒有找到的狀況,繼續輸入 System.out.println("請輸入學生的姓名:"); String name = input.next(); System.out.println("請輸入學生的性別:"); String gender = input.next(); System.out.println("請輸入學生的分數:"); int scores = input.nextInt(); student stu= new student(stuno,name,gender,scores); xmlwork.AddStu(url, stu); System.out.println("已成功添加編號爲"+stuno+"的學生!"); } } // 學生修改方法 private void updateStu(){ System.out.println("請輸入學生編號:"); int stuno = input.nextInt(); // 調用方法判斷該編號的學生是否存在 if(xmlwork.isStu(url, stuno)){ // 找到的狀況提示--修改 System.out.println("請輸入學生的姓名:"); String name = input.next(); System.out.println("請輸入學生的性別:"); String gender = input.next(); System.out.println("請輸入學生的分數:"); int scores = input.nextInt(); student stu= new student(stuno,name,gender,scores); xmlwork.UpdateStu(url, stu); System.out.println("已成功修改編號爲"+stuno+"的學生!"); }else{ // 沒有找到的狀況,提示錯誤。 System.out.println("該學生編號不存在!"); updateStu(); } } // 學生的刪除方法 private void delStu(){ System.out.println("請輸入學生編號:"); int stuno = input.nextInt(); System.out.println("已成功刪除編號爲"+stuno+"的學生!"); // 調用方法判斷學生是否存在 if(xmlwork.isStu(url, stuno)){ xmlwork.DelStu(url, stuno); }else{ // 未找到編號,提示錯誤 System.out.println("該學生編號不存在!"); delStu(); } } }
五、ui
package xml; public class studentDemo { public static void main(String[] args) { studentMenu stm = new studentMenu(); stm.showMenu(); } }
六、驗證
this
6.1 查詢url
=======歡迎登陸學員管理系統======spa
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出orm
1
學生的信息爲:
學生編號 學生姓名 學生性別 學生分數
1001 張三 男 100
1002 李四 男 99
1003 王五 女 98
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
6.2 添加
2
請輸入學生編號:
1004
請輸入學生的姓名:
Tom
請輸入學生的性別:
男
請輸入學生的分數:
60
已成功添加編號爲1004的學生!
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
6.3 修改
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
1
學生的信息爲:
學生編號 學生姓名 學生性別 學生分數
1001 張三 男 100
1002 李四 男 99
1003 王五 女 98
1004 Tom 男 60
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
3
請輸入學生編號:
1005
該學生編號不存在!
請輸入學生編號:
1004
請輸入學生的姓名:
Jack
請輸入學生的性別:
女
請輸入學生的分數:
61
已成功修改編號爲1004的學生!
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
1
學生的信息爲:
學生編號 學生姓名 學生性別 學生分數
1001 張三 男 100
1002 李四 男 99
1003 王五 女 98
1004 Jack 女 61
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
6.4 刪除
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
4
請輸入學生編號:
1004
已成功刪除編號爲1004的學生!
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
1
學生的信息爲:
學生編號 學生姓名 學生性別 學生分數
1001 張三 男 100
1002 李四 男 99
1003 王五 女 98
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
6.4 退出
=======歡迎登陸學員管理系統======
請選擇相應的操做:1.查詢學生2.添加學生3.修改學生4.刪除學生5.退出
5
您已退出系統!