当前位置:K88软件开发文章中心编程语言AjaxAjax01 → 文章内容

将xml文件作为一个小的数据库,进行学生的增删改查的简单实例

减小字体 增大字体 作者:     来源:asp编程网  发布时间:2018-12-30 9:22:38

1.xml文件:

<&
#63
xml version="1.0" encoding="UTF-8"&
#63
> ttt 44 linda2 22 linda3 23 jack 2 yyh1 22

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("欢迎来到学生管理系统请输入你要进行什么操作是:1.添加学生信息2.删除学生信息3.修改学生信息(请输入前边的序号)")
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 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

[1] [2]  下一页


将xml文件作为一个小的数据库,进行学生的增删改查的简单实例