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();
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();
updStudent.getElementsByTagName(
"name"
).item(i).getFirstChild().setNodeValue(newName);
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) {
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();
}
}
}