温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何将xml文件作为数据库进行学生的增删改查

发布时间:2021-09-15 09:59:09 来源:亿速云 阅读:155 作者:柒染 栏目:web开发

如何将xml文件作为数据库进行学生的增删改查,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

1.xml文件:

<?xml version="1.0" encoding="UTF-8"?><Students>  <student id="2">   <name>ttt</name>   <age>44</age>  </student>  <student id="3">   <name>linda2</name>   <age>22</age>  </student>  <student id="4">   <name>linda3</name>   <age>23</age>  </student>  <student id="5">   <name>jack</name>   <age>2</age>  </student>  <student id="1">    <name>yyh2</name>    <age>22</age>  </student> </Students>

2.Java代码

import java.io.File; import java.io.IOException; import java.util.Scanner; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; //在学生管理系统里面,学生的学号是唯一的,姓名有可能重复 public class StudentManager {   public static void main(String[] args) {     try {       Document doc = Domutils.getDoc(new File("xml文件的相对路径"));       Scanner input = new Scanner(System.in);       System.out.println("欢迎来到学生管理系统\n\n\n请输入你要进行什么操作是:\n1.添加学生信息\n2.删除学生信息\n3.修改学生信息\n(请输入前边的序号)");       int num = input.nextInt();       if(num == 1) {         addStudent(doc);       }else if(num == 2) {         delStudent(doc);       }else if(num == 3) {         updStudent(doc);       }     } catch (SAXException e) {       e.printStackTrace();     } catch (IOException e) {       e.printStackTrace();     } catch (ParserConfigurationException e) {       e.printStackTrace();     }   }   //修改学生信息   private static void updStudent(Document doc) {     Element updStudent = null;     Scanner input = new Scanner(System.in);     System.out.println("请输入你要修改的学生的学号:");     String studentid = input.nextLine();     System.out.println("请输入新学生的姓名:");     String newName = input.nextLine();     System.out.println("请输入新学生的年龄:");     String newAge = input.nextLine();          //将每一个学生的列出来,for循环判断你要修改信息的学生是哪一个     NodeList list = doc.getElementsByTagName("student");     for(int i = 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;       }     }     //找出根元素,将修改后的元素持久化到文件     Element root = doc.getDocumentElement();     transform(root);     System.out.println(updStudent);   }   //删除学生信息   private static void delStudent(Document doc) {     Scanner input = new Scanner(System.in);     //输入你要删除的学生的 学号     System.out.println("请输入要删除学生的学号:");     String studentid = input.nextLine();     Element root = doc.getDocumentElement();          //将学生列成一个表,进行遍历,找对应学号的学生进行删除     NodeList list = doc.getElementsByTagName("student");     for(int i = 0; i < list.getLength(); i++) {     if((studentid).equals(list.item(i).getAttributes().getNamedItem("id").getNodeValue())){       Element delStudent = (Element) doc.getElementsByTagName("student").item(i).getFirstChild().getParentNode();          root.removeChild(delStudent);         break;       }else {         System.out.println("没有该学生");         break;       }     }     //持久化到文件     transform(root);   }      //添加学生信息   private static void addStudent(Document doc) { //    System.out.println(doc.getElementsByTagName("student").item(1).getAttributes().getNamedItem("id").getNodeValue());     Element root = doc.getDocumentElement();     //从控制台输入     Scanner input = new Scanner(System.in);     System.out.println("请输入学生的序号:id = ");           //将学生放到一个列表里面,看我们要添加的学生的学号里面是否已经有了,如果有,需要将新加入的学生的学号改一下     NodeList list = doc.getElementsByTagName("student");     String studentid = input.nextLine();     for(int i = 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 = ");     String name_value = input.nextLine();     System.out.println("请输入要添加学生的年龄:age = ");     String age_value = input.nextLine();          //创建节点     Element student = doc.createElement("student");     Element name = doc.createElement("name");     Element age = doc.createElement("age");     Text namText = doc.createTextNode(name_value);     Text ageText = 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);        }   //持久化到文件的方法   private static void transform(Element root)       throws TransformerFactoryConfigurationError {     TransformerFactory factory = TransformerFactory.newInstance();     try {       Transformer tf = factory.newTransformer();       tf.transform(new DOMSource(root), new StreamResult(new File("src/com/briup/dom/student.xml")));     } catch (TransformerConfigurationException e) {       e.printStackTrace();     } catch (TransformerException e) {       e.printStackTrace();     }   } }

2.Dom解析文件(将获取解析文件的部分封装起来)

import java.io.File; import java.io.IOException; import java.nio.file.attribute.AclEntry.Builder; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.xml.sax.SAXException; public class Domutils {   public static Document getDoc(File file) throws SAXException, IOException, ParserConfigurationException {       //获取工厂模式     DocumentBuilderFactory factory =          DocumentBuilderFactory.newInstance();         //获取builder对象       DocumentBuilder builder = factory.newDocumentBuilder();           //将要解析文件加载成一个树状文件,开始解析            Document document = builder.parse(file);     return document;   } }

看完上述内容,你们掌握如何将xml文件作为数据库进行学生的增删改查的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI