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>yyh1</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(); } }}
新聞熱點
疑難解答
圖片精選