xml的实例--学生管理系统

前端之家收集整理的这篇文章主要介绍了xml的实例--学生管理系统前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

stu.xml:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<exam>
<student>
<name>张三</name>
<location>西安</location>
<grade>98</grade>
</student>
<student>
<name>李四</name>
<location>临潼</location>
<grade>59</grade>
</student>
</exam>

CRUD.java

package XMLUtils;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import com.student.Student;
import com.student.StudentNotFoundException;

public class CRUD {
		public static void create(Student student) throws Exception
		{
			Document dom =Utils.createDocument();
			Element student_tag=dom.createElement("student");
			Element name_tag=dom.createElement("name");
			name_tag.setTextContent(student.getName());
			Element location_tag=dom.createElement("location");
			location_tag.setTextContent(student.getLocation());
			Element grade_tag=dom.createElement("grade");
			grade_tag.setTextContent(student.getGrade()+"");
			student_tag.appendChild(name_tag);
			student_tag.appendChild(location_tag);
			student_tag.appendChild(grade_tag);
			
			dom.getFirstChild().appendChild(student_tag);
			Utils.UpdateXML(dom);
		}
		public static Student Read(String name) throws Exception
		{
			Document dom =Utils.createDocument();
			NodeList list=dom.getElementsByTagName("name");
			for(int k=0;k<list.getLength();++k)
			{
				if(list.item(k).getTextContent().equals(name))
				{
					Element student=(Element) list.item(k).getParentNode();
					Student st=new Student();
	
					st.setGrade(Integer.parseInt(student.getElementsByTagName("grade").item(0).getTextContent()));
					st.setLocation(student.getElementsByTagName("location").item(0).getTextContent());
					st.setName(name);
					return st;
				}
			}
			throw new StudentNotFoundException("對不起,未找到該同學");
		}
		public static void Delete(String name) throws Exception
		{
			Document dom =Utils.createDocument();
			NodeList list=dom.getElementsByTagName("name");
			for(int k=0;k<list.getLength();++k)
			{
				if(list.item(k).getTextContent().equals(name))
				{
					Element student=(Element) list.item(k).getParentNode();
					student.getParentNode().removeChild(student );
					Utils.UpdateXML(dom);
					return ;
				}
			}
			throw new StudentNotFoundException("對不起,未找到該同學");

		}
		
}

student.java
package com.student;

public class Student {
	private  String name;
	private  String location;
	private int grade;
	public Student(String na,String lo,int gr)
	{
		name=na;
		location=lo;
		grade=gr;
	}
	public Student()
	{
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getLocation() {
		return location;
	}
	public void setLocation(String location) {
		this.location = location;
	}
	public int getGrade() {
		return grade;
	}
	public void setGrade(int grade) {
		this.grade = grade;
	}
}

Utils.java
package XMLUtils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

public class Utils {
	public static Document createDocument() throws Exception
	{
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
		DocumentBuilder builder=factory.newDocumentBuilder();
		return builder.parse("src/stu.xml");//注意格式
	}
	public static void UpdateXML(Document dom) throws TransformerException,FileNotFoundException
	{
		TransformerFactory  tf=TransformerFactory.newInstance();
		Transformer tr=tf.newTransformer();
		 tr.transform(new DOMSource(dom),new StreamResult(new FileOutputStream("src/stu.xml") ));
	}
}


test_CRUD.java 用来测试CRUD的每个功能的。

package Test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.w3c.dom.Document;

import XMLUtils.CRUD;
import XMLUtils.Utils;

import com.student.Student;

public class test_CRUD {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args)  {
		try{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String name,location,grade;
		System.out.print("请输入姓名:");
		name=br.readLine();
	    CRUD.Delete(name);
	    System.out.println("已成功删除");
	    
		}catch(Exception ex)
		{
			ex.printStackTrace();
			System.out.println("对不起,业务繁忙,请重新输入.");
		}
	}
}

StudentNotFoundException.java
package com.student;

public class StudentNotFoundException extends Exception {

	public StudentNotFoundException() {
		// TODO Auto-generated constructor stub
	}

	public StudentNotFoundException(String message) {
		super(message);
		// TODO Auto-generated constructor stub
	}

	public StudentNotFoundException(Throwable cause) {
		super(cause);
		// TODO Auto-generated constructor stub
	}

	public StudentNotFoundException(String message,Throwable cause) {
		super(message,cause);
		// TODO Auto-generated constructor stub
	}

	public StudentNotFoundException(String message,Throwable cause,boolean enableSuppression,boolean writableStackTrace) {
		super(message,cause,enableSuppression,writableStackTrace);
		// TODO Auto-generated constructor stub
	}
}

有一点值得注意:

在查阅某个学生时,找到了学生标签,然后查找姓名,地址,成绩标签时,不是查看其属性属性是修饰标签的),而是要调用student_tag.getElementsByTagName("tagname");来获取这个学生的子标签。document也相当于一个标签,它有getElementsByTagName的方法,而其它标签也有此标签也就不奇怪了吧。

原文链接:https://www.f2er.com/xml/294884.html

猜你在找的XML相关文章