将xml文件作为一个小的数据库,进行学生的增删改查的简单实例
1.xml文件:
<?xmlversion="1.0"encoding="UTF-8"?><Students> <studentid="2"> <name>ttt</name> <age>44</age> </student> <studentid="3"> <name>linda2</name> <age>22</age> </student> <studentid="4"> <name>linda3</name> <age>23</age> </student> <studentid="5"> <name>jack</name> <age>2</age> </student> <studentid="1"> <name>yyh1</name> <age>22</age> </student> </Students>
2.Java代码
importjava.io.File; importjava.io.IOException; importjava.util.Scanner; importjavax.xml.parsers.ParserConfigurationException; importjavax.xml.transform.Transformer; importjavax.xml.transform.TransformerConfigurationException; importjavax.xml.transform.TransformerException; importjavax.xml.transform.TransformerFactory; importjavax.xml.transform.TransformerFactoryConfigurationError; importjavax.xml.transform.dom.DOMSource; importjavax.xml.transform.stream.StreamResult; importorg.w3c.dom.Document; importorg.w3c.dom.Element; importorg.w3c.dom.NodeList; importorg.w3c.dom.Text; importorg.xml.sax.SAXException; //在学生管理系统里面,学生的学号是唯一的,姓名有可能重复 publicclassStudentManager{ publicstaticvoidmain(String[]args){ try{ Documentdoc=Domutils.getDoc(newFile("xml文件的相对路径")); Scannerinput=newScanner(System.in); System.out.println("欢迎来到学生管理系统\n\n\n请输入你要进行什么操作是:\n1.添加学生信息\n2.删除学生信息\n3.修改学生信息\n(请输入前边的序号)"); intnum=input.nextInt(); if(num==1){ addStudent(doc); }elseif(num==2){ delStudent(doc); }elseif(num==3){ updStudent(doc); } }catch(SAXExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }catch(ParserConfigurationExceptione){ e.printStackTrace(); } } //修改学生信息 privatestaticvoidupdStudent(Documentdoc){ ElementupdStudent=null; Scannerinput=newScanner(System.in); System.out.println("请输入你要修改的学生的学号:"); Stringstudentid=input.nextLine(); System.out.println("请输入新学生的姓名:"); StringnewName=input.nextLine(); System.out.println("请输入新学生的年龄:"); StringnewAge=input.nextLine(); //将每一个学生的列出来,for循环判断你要修改信息的学生是哪一个 NodeListlist=doc.getElementsByTagName("student"); for(inti=0;i<list.getLength();i++){ if(studentid.equals(list.item(i).getAttributes().getNamedItem("id").getNodeValue())){ updStudent=(Element)doc.getElementsByTagName("student").item(i).getFirstChild().getParentNode(); //对学生的name属性进行赋新值 updStudent.getElementsByTagName("name").item(i).getFirstChild().setNodeValue(newName); //对学生的age属性赋新值 updStudent.getElementsByTagName("age").item(i).getFirstChild().setNodeValue(newAge); }else{ break; } } //找出根元素,将修改后的元素持久化到文件 Elementroot=doc.getDocumentElement(); transform(root); System.out.println(updStudent); } //删除学生信息 privatestaticvoiddelStudent(Documentdoc){ Scannerinput=newScanner(System.in); //输入你要删除的学生的学号 System.out.println("请输入要删除学生的学号:"); Stringstudentid=input.nextLine(); Elementroot=doc.getDocumentElement(); //将学生列成一个表,进行遍历,找对应学号的学生进行删除 NodeListlist=doc.getElementsByTagName("student"); for(inti=0;i<list.getLength();i++){ if((studentid).equals(list.item(i).getAttributes().getNamedItem("id").getNodeValue())){ ElementdelStudent=(Element)doc.getElementsByTagName("student").item(i).getFirstChild().getParentNode(); root.removeChild(delStudent); break; }else{ System.out.println("没有该学生"); break; } } //持久化到文件 transform(root); } //添加学生信息 privatestaticvoidaddStudent(Documentdoc){ //System.out.println(doc.getElementsByTagName("student").item(1).getAttributes().getNamedItem("id").getNodeValue()); Elementroot=doc.getDocumentElement(); //从控制台输入 Scannerinput=newScanner(System.in); System.out.println("请输入学生的序号:id="); //将学生放到一个列表里面,看我们要添加的学生的学号里面是否已经有了,如果有,需要将新加入的学生的学号改一下 NodeListlist=doc.getElementsByTagName("student"); Stringstudentid=input.nextLine(); for(inti=0;i<list.getLength();i++){ if(studentid.equals(list.item(i).getAttributes().getNamedItem("id").getNodeValue())){ System.out.println("该序号学生表里面已经存在,请重新输入一个新的序号:"); studentid=input.nextLine(); }else{ break; } } System.out.println("请输入要添加学生的姓名:name="); Stringname_value=input.nextLine(); System.out.println("请输入要添加学生的年龄:age="); Stringage_value=input.nextLine(); //创建节点 Elementstudent=doc.createElement("student"); Elementname=doc.createElement("name"); Elementage=doc.createElement("age"); TextnamText=doc.createTextNode(name_value); TextageText=doc.createTextNode(age_value); //关联节点之间的关系 root.appendChild(student); student.appendChild(name); student.appendChild(age); student.setAttribute("id",studentid); name.appendChild(namText); age.appendChild(ageText); //持久化到文件 transform(root); } //持久化到文件的方法 privatestaticvoidtransform(Elementroot) throwsTransformerFactoryConfigurationError{ TransformerFactoryfactory=TransformerFactory.newInstance(); try{ Transformertf=factory.newTransformer(); tf.transform(newDOMSource(root),newStreamResult(newFile("src/com/briup/dom/student.xml"))); }catch(TransformerConfigurationExceptione){ e.printStackTrace(); }catch(TransformerExceptione){ e.printStackTrace(); } } }
2.Dom解析文件(将获取解析文件的部分封装起来)
importjava.io.File; importjava.io.IOException; importjava.nio.file.attribute.AclEntry.Builder; importjavax.xml.parsers.DocumentBuilder; importjavax.xml.parsers.DocumentBuilderFactory; importjavax.xml.parsers.ParserConfigurationException; importorg.w3c.dom.Document; importorg.xml.sax.SAXException; publicclassDomutils{ publicstaticDocumentgetDoc(Filefile)throwsSAXException,IOException,ParserConfigurationException{ //获取工厂模式 DocumentBuilderFactoryfactory= DocumentBuilderFactory.newInstance(); //获取builder对象 DocumentBuilderbuilder=factory.newDocumentBuilder(); //将要解析文件加载成一个树状文件,开始解析 Documentdocument=builder.parse(file); returndocument; } }
以上这篇将xml文件作为一个小的数据库,进行学生的增删改查的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。