📄 datafile.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 + -