使用前文的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
您已退出系统!