Use xml files as a small database to add, delete, modify, and query students, and add, delete, and delete xml files.
1. xml file:
1 <?xml version="1.0" encoding="UTF-8"?><Students> 2 <student id="2"> 3 <name>ttt</name> 4 <age>44</age> 5 </student> 6 <student id="3"> 7 <name>linda2</name> 8 <age>22</age> 9 </student>10 <student id="4">11 <name>linda3</name>12 <age>23</age>13 </student>14 <student id="5">15 <name>jack</name>16 <age>2</age>17 </student>18 <student id="1">19 <name>yyh1</name>20 <age>22</age>21 </student>22 </Students>
2. Java code
1 import java. io. file; 2 import java. io. IOException; 3 import java. util. export; 4 5 import javax. xml. parsers. parserConfigurationException; 6 import javax. xml. transform. transformer; 7 import javax. xml. transform. transformerConfigurationException; 8 import javax. xml. transform. transformerException; 9 import javax. xml. transform. transformerFactory; 10 import javax. xml. transform. transformerFactoryConfigurationError; 11 import javax. xml. transform. dom. DOMSource; 12 import javax. xml. transform. stream. streamResult; 13 14 import org. w3c. dom. document; 15 import org. w3c. dom. element; 16 import org. w3c. dom. nodeList; 17 import org. w3c. dom. text; 18 import org. xml. sax. SAXException; 19 20 // In the student management system, the student's student ID is unique and the name may be repeated 21 public class StudentManager {22 public static void main (String [] args) {23 try {24 Document doc = Domutils. getDoc (new File ("relative path of xml File"); 25 bytes input = new bytes (System. in); 26 System. out. println ("Welcome to student management system \ n please enter what you want to do: \ n1. add student information \ n2. Delete student information \ n3. modify student information \ n (enter the number of the front edge) "); 27 int num = input. nextInt (); 28 if (num = 1) {29 addStudent (doc); 30} else if (num = 2) {31 delStudent (doc ); 32} else if (num = 3) {33 updStudent (doc); 34} 35} catch (SAXException e) {36 e. printStackTrace (); 37} catch (IOException e) {38 e. printStackTrace (); 39} catch (ParserConfigurationException e) {40 e. printStackTrace (); 41} 42} 43 // modify student information 44 private static void updStudent (Document doc) {45 Element updStudent = null; 46 partition input = new partition (System. in); 47 System. out. println ("Enter the student ID you want to modify:"); 48 String studentid = input. nextLine (); 49 System. out. println ("enter the name of the new student:"); 50 String newName = input. nextLine (); 51 System. out. println ("Enter the age of the new student:"); 52 String newAge = input. nextLine (); 53 54 // list each student. The for loop determines which student you want to modify the information is 55 NodeList list = doc. getElementsByTagName ("student"); 56 for (int I = 0; I <list. getLength (); I ++) {57 if (studentid. equals (list. item (I ). getAttributes (). getNamedItem ("id "). getNodeValue () {58 updStudent = (Element) doc. getElementsByTagName ("student "). item (I ). getFirstChild (). getParentNode (); 59 // assign a value of 60 updStudent to the student's name attribute. getElementsByTagName ("name "). item (I ). getFirstChild (). setNodeValue (newName); 61 // assign a value 62 updStudent to the student's age attribute. getElementsByTagName ("age "). item (I ). getFirstChild (). setNodeValue (newAge); 63 64} else {65 break; 66} 67} 68 // locate the root Element and persistently Save the modified Element to the 69 Element root = doc file. getDocumentElement (); 70 transform (root); 71 System. out. println (updStudent); 72} 73 // Delete student information 74 private static void delStudent (Document doc) {75 student input = new student (System. in); 76 // enter the student ID 77 System. out. println ("Enter the student ID to delete:"); 78 String studentid = input. nextLine (); 79 Element root = doc. getDocumentElement (); 80 81 // list the students into a table and traverse the table. Find the students corresponding to the student ID and delete 82 NodeList list = doc. getElementsByTagName ("student"); 83 for (int I = 0; I <list. getLength (); I ++) {84 if (studentid ). equals (list. item (I ). getAttributes (). getNamedItem ("id "). getNodeValue () {85 Element delStudent = (Element) doc. getElementsByTagName ("student "). item (I ). getFirstChild (). getParentNode (); 87 root. removeChild (delStudent); 88 break; 89} else {90 System. out. println ("no student"); 91 break; 92} 93} 94 // persists to file 95 transform (root ); 96} 97 98 // Add student information 99 private static void addStudent (Document doc) {100 // System. out. println (doc. getElementsByTagName ("student "). item (1 ). getAttributes (). getNamedItem ("id "). getNodeValue (); 101 Element root = doc. getDocumentElement (); 102 // enter 103 bytes input = new bytes (System. in); 104 System. out. println ("Enter the student id ="); 105 106 // put the student into a list to see if the student id we want to add already exists, if yes, you need to change the student ID to 107 NodeList list = doc. getElementsByTagName ("student"); 108 String studentid = input. nextLine (); 109 for (int I = 0; I <list. getLength (); I ++) {110 if (studentid. equals (list. item (I ). getAttributes (). getNamedItem ("id "). getNodeValue () {111 System. out. println ("this number already exists in the student table. Please enter a new number:"); 112 studentid = input. nextLine (); 113} else {114 break; 115} 116 117 System. out. println ("enter the name of the student to be added: name ="); 119 String name_value = input. nextLine (); 120 System. out. println ("Enter the age of the student to be added: age ="); 121 String age_value = input. nextLine (); 122 123 // create node 124 Element student = doc. createElement ("student"); 125 Element name = doc. createElement ("name"); 126 Element age = doc. createElement ("age"); 127 Text namText = doc. createTextNode (name_value); 128 Text ageText = doc. createTextNode (age_value); 129 // relationship between associated nodes: 130 root. appendChild (student); 131 student. appendChild (name); 132 student. appendChild (age); 133 student. setAttribute ("id", studentid); 134 name. appendChild (namText); 135 age. appendChild (ageText); 136 // persists to file 137 transform (root); 138 139} 140 // method of persistence to file 141 private static void transform (Element root) 142 throws TransformerFactoryConfigurationError {143 TransformerFactory factory = TransformerFactory. newInstance (); 144 try {145 Transformer tf = factory. newTransformer (); 146 tf. transform (new DOMSource (root), new StreamResult (new File ("src/com/briup/dom/student. xml "); 147} catch (TransformerConfigurationException e) {148 e. printStackTrace (); 149} catch (TransformerException e) {150 e. printStackTrace (); 151} 152} 153}
2. Dom parsing file (encapsulate the part of the obtained parsing file)
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 {
// Obtain the factory mode DocumentBuilderFactory factory = DocumentBuilderFactory. newInstance ();
// Obtain the builder object DocumentBuilder builder = factory. newDocumentBuilder ();
// Load the file to be parsed into a tree file and start parsing Document document = builder. parse (file); return Document ;}}