⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datafile.java

📁 SWT开发的信息简单的信息管理软件
💻 JAVA
字号:
package dian.ikeel.yin;

import java.io.*;

import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.util.LinkedList;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.util.*;
import javax.xml.stream.XMLStreamWriter;
import org.w3c.dom.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.dom.*;
import javax.xml.transform.*;

public class DataFile extends DefaultHandler {

	// private XMLReader xmlreader;
	private static String PATH = "data.xml";
	private static String USERS = "users";
	private static String USER = "user";
	private static String UUID = "uuid";
	private static String NAME = "name";
	private static String SERIAL = "serialnum";
	private static String AGE = "age";
	private static String SEX = "sex";
	private static String MAJOR = "major";
	private static String CLASS = "class";

	private DoubleLinkList<Student> stulist;

	
	public DataFile()
	{
		
	
		SAXParserFactory parserfactory = SAXParserFactory.newInstance();
		SAXParser parser;
		try {
			parser = parserfactory.newSAXParser();
			parser.parse(new File(PATH), this);
		}
		catch(Exception e)
		{
			System.out.println(e.getLocalizedMessage());
		}
	}
	@Override
	public void endDocument() throws SAXException {
		// TODO Auto-generated method stub
		super.endDocument();
		System.out.println(stulist.size());
	}

	@Override
	public void endElement(String uri, String localName, String name)
			throws SAXException {
		// TODO Auto-generated method stub
		super.endElement(uri, localName, name);
	}

	@Override
	public void startDocument() throws SAXException {
		// TODO Auto-generated method stub
		// super.startDocument();
		stulist = new DoubleLinkList<Student>();

	}

	public void characters(char ch[], int start, int length)
			throws SAXException {
		// System.out.println(ch);
	}

	@Override
	public void startElement(String uri, String localName, String name,
			Attributes attributes) throws SAXException {

		Student stu = new Student();
		if (name == "user") {
			try {

				stu.setUuid(attributes.getValue(UUID));
				stu.setSerialnum(attributes.getValue(SERIAL));
				stu.setName(attributes.getValue(NAME));
				stu.setAge(Integer.valueOf(attributes.getValue(AGE)));
				stu.setSex(Integer.valueOf(attributes.getValue(SEX)));
				stu.setMajor(attributes.getValue(MAJOR));
				stu.setClassNo(attributes.getValue(CLASS));
			} catch (Exception e) {
				System.out.println(e.getLocalizedMessage());
			}

			stulist.add(stu);
		}
	}
 
	public static void main(String[] ars) {
		DataFile handler = new DataFile();
		 
		Student stu = new Student();
		stu.setUuid();
		stu.setName("ikeel");
		stu.setSerialnum("220");
		stu.setAge(21);
		stu.setSex(1);
		stu.setMajor("ei");
		stu.setClassNo("seed");
		try {
			handler.addOrUpdate(stu);
			 
		} catch (Exception e) {
			e.printStackTrace();
		}
		 

	}

	public DoubleLinkList<Student> getStudentList() {
		return stulist;
	} 

	public void writeInAStudent(Student stu) {

		try {
			Document doc = DocumentBuilderFactory.newInstance()
					.newDocumentBuilder().parse(new File(PATH));

			
			Element element = doc.createElement(USER);
			element.setAttribute(UUID, stu.getUuid());
			element.setAttribute(SERIAL, stu.getSerialnum());
			element.setAttribute(NAME, stu.getName());
			element.setAttribute(AGE, String.valueOf(stu.getAge()));
			element.setAttribute(SEX, String.valueOf(stu.getSex()));
			element.setAttribute(MAJOR, stu.getMajor());
			element.setAttribute(CLASS, stu.getClassNo());
			NodeList nodelist = doc.getElementsByTagName(USERS);
			doc.getDocumentElement().appendChild(element);
			save(doc);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public  static void save(Document doc) {
		try {
			TransformerFactory tf = TransformerFactory.newInstance();

			Transformer transformer = tf.newTransformer();
		
			 doc.normalize();
			 
			DOMSource source = new DOMSource(doc);
            doc.normalize();
			transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");

			transformer.setOutputProperty(OutputKeys.INDENT, "yes");

			PrintWriter pw = new PrintWriter(new FileOutputStream(PATH));

			StreamResult result = new StreamResult(pw);

			transformer.transform(source, result);
		} catch (Exception e) {
			System.out.println(e.getLocalizedMessage());
		}

	}
	
	public static void addOrUpdate(Student s)
	{
		try
		{
			Document doc = DocumentBuilderFactory.newInstance()
			.newDocumentBuilder().parse(new File(PATH));

		Node parent=doc.getDocumentElement();
		NodeList children=parent.getChildNodes();
	//	System.out.println("hhhh"+children.getLength());
		Element element;
		   element = doc.createElement(USER);
			element.setAttribute(UUID, s.getUuid());
			element.setAttribute(SERIAL, s.getSerialnum());
			element.setAttribute(NAME, s.getName());
			element.setAttribute(AGE, String.valueOf(s.getAge()));
			element.setAttribute(SEX, String.valueOf(s.getSex()));
			element.setAttribute(MAJOR, s.getMajor());
			element.setAttribute(CLASS, s.getClassNo());
		for(int i=0;i<children.getLength();i++)
		{
			Student stu=new Student();
			Node node=children.item(i);
			
			//System.out.println(node.getNodeName());
			if(node.getNodeName().equals(USER))
			{
				//System.out.println(node.getNodeName());
			 stu.setUuid(node.getAttributes().getNamedItem(UUID).getNodeValue());
			 stu.setSerialnum((node.getAttributes().getNamedItem(SERIAL).getNodeValue()));
			 stu.setName((node.getAttributes().getNamedItem(NAME).getNodeValue()));
			 stu.setAge(Integer.valueOf(node.getAttributes().getNamedItem(AGE).getNodeValue()));
			 stu.setSex(Integer.valueOf(node.getAttributes().getNamedItem(SEX).getNodeValue()));
			 stu.setMajor((node.getAttributes().getNamedItem(MAJOR).getNodeValue()));
			 stu.setClassNo((node.getAttributes().getNamedItem(CLASS).getNodeValue()));
			
			 
			  
			 if(s.equals(stu))
			 {
				  element.setAttribute(UUID, s.getUuid());
				  parent.replaceChild(element, node);
				  save(doc);
				  return ;
			 }
			 
			}
		 
		}

		s.setUuid();
		element.setAttribute(UUID, s.getUuid());
		parent.appendChild(element);
		save(doc);
		
		
		 
	} catch (Exception e) {
		e.printStackTrace();
	}
	}
/*
	public void clean()
	{
		try
		{
			Document doc = DocumentBuilderFactory.newInstance()
			.newDocumentBuilder().parse(new File(PATH));

		Node parent=doc.getDocumentElement();
		NodeList children=parent.getChildNodes();
		for(int i=0;i<children.getLength();i++)
		{
			Student stu=new Student();
			Node node=children.item(i);
			//System.out.println(node.getNodeName());
			if(node.getNodeName().equals(USER))
			{
			
			 stu.setUuid(node.getAttributes().getNamedItem(UUID).getNodeValue());
			 stu.setSerialnum((node.getAttributes().getNamedItem(SERIAL).getNodeValue()));
			 stu.setName((node.getAttributes().getNamedItem(NAME).getNodeValue()));
			 stu.setAge(Integer.valueOf(node.getAttributes().getNamedItem(AGE).getNodeValue()));
			 stu.setSex(Integer.valueOf(node.getAttributes().getNamedItem(SEX).getNodeValue()));
			 stu.setMajor((node.getAttributes().getNamedItem(MAJOR).getNodeValue()));
			 stu.setClassNo((node.getAttributes().getNamedItem(CLASS).getNodeValue()));
			
			 
			 Element element = doc.createElement(USER);
				element.setAttribute(UUID, s.getUuid());
				element.setAttribute(SERIAL, s.getSerialnum());
				element.setAttribute(NAME, s.getName());
				element.setAttribute(AGE, String.valueOf(s.getAge()));
				element.setAttribute(SEX, String.valueOf(s.getSex()));
				element.setAttribute(MAJOR, s.getMajor());
				element.setAttribute(CLASS, s.getClassNo());
			 if(s.equals(stu))
			 {
				 element.setAttribute(UUID, s.getUuid());
				  parent.replaceChild(element, node);
			 }
			 else
			 {
					s.setUuid();
					element.setAttribute(UUID, s.getUuid());
					parent.appendChild(element);
				  
			 }
			}
		 
		 
		save(doc);
		
		 
	} catch (Exception e) {
		e.printStackTrace();
	}
		
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	*/
	
	public  static void  deleteAStudent(Student s) {
		try {
			Document doc = DocumentBuilderFactory.newInstance()
					.newDocumentBuilder().parse(new File(PATH));

			Node parent=doc.getDocumentElement();
			NodeList children=parent.getChildNodes();
			System.out.println("hhhh"+children.getLength());
			
			for(int i=0;i<children.getLength();i++)
			{
				Student stu=new Student();
				Node node=children.item(i);
				//System.out.println(node.getNodeName());
				if(node.getNodeName().equals(USER))
				{
			 
				 stu.setUuid(node.getAttributes().getNamedItem(UUID).getNodeValue());
				 stu.setSerialnum((node.getAttributes().getNamedItem(SERIAL).getNodeValue()));
				 stu.setName((node.getAttributes().getNamedItem(NAME).getNodeValue()));
				 stu.setAge(Integer.valueOf(node.getAttributes().getNamedItem(AGE).getNodeValue()));
				 stu.setSex(Integer.valueOf(node.getAttributes().getNamedItem(SEX).getNodeValue()));
				 stu.setMajor((node.getAttributes().getNamedItem(MAJOR).getNodeValue()));
				 stu.setClassNo((node.getAttributes().getNamedItem(CLASS).getNodeValue()));
				
				 if(s.equals(stu))
				 {
					 parent.removeChild(node);
				 }
				}
			 
			}
			save(doc);
			
			 
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


	
	public DoubleLinkList<Student> getStulist() {
		return stulist;
	}

	public void setStulist(DoubleLinkList<Student> stulist) {
		this.stulist = stulist;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -