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

📄 xmluserdao.java

📁 更不用说了,我培训期间的资料,包括每天老师的例子.文件主要包括,HIBERNATE的配置,一对多,多对多.别的就是些平时的自己作业.XML方面也有.我感觉很适合,想学习这方面的却没有适合练习的人,毕竟
💻 JAVA
字号:
package server.dao;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;

import org.w3c.dom.*;
import org.xml.sax.SAXException;

import server.model.User;
public class XMLUserDAO implements UserDAO {
	String fileName;
	public XMLUserDAO(String fileName) {
		this.fileName = fileName;
	}
	public Map<String, User> getAllUsers() {
		Map<String,User> users=new HashMap<String,User>();
		
		try {
			DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
			DocumentBuilder builder=factory.newDocumentBuilder();
			Document doc=builder.parse(fileName);
			
			NodeList userElements=doc.getElementsByTagName("User");
			for(int i=0;i<userElements.getLength();i++){
				User user=new User();
				Element userElement=(Element)(userElements.item(i));
				NodeList nl=userElement.getChildNodes();
				for(int j=0;j<nl.getLength();j++){
					Node n=nl.item(j);
					if (n.getNodeType()==Node.ELEMENT_NODE){
						Element e=(Element)n;
						String name=e.getTagName();
						String value=e.getTextContent().trim();
						if (name.equals("userName")) user.setUserName(value);
						if (name.equals("password")) user.setPassword(value);
						if (name.equals("name")) user.setName(value);
						if (name.equals("classNumber")) user.setClassNumber(value);
						if (name.equals("email")) user.setEmail(value);
						if (name.equals("phone")) user.setPhone(value);
					}
				}
				
				users.put(user.getUserName(),user);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return users;
	}
	public List<User> getAllUsersByClassNumber(String classNumber) {
		Map<String,User> users=getAllUsers();
		List<User> l=new ArrayList<User>();
		Set<String> userNames=users.keySet();
		for(String s:userNames){
			User u=users.get(s);
			if (classNumber.equals(u.getClassNumber())){
				l.add(u);
			}
		}
		return l;
	}
	public boolean saveUser(User u) {
		try {
			Map<String,User> users=this.getAllUsers();
			PrintWriter out=new PrintWriter(fileName);
			saveFileHeader(out);
			
			//把原有的用户再写回到文件
			Set<String> userNames=users.keySet();
			for(String userName:userNames){
				User user2=users.get(userName);
				saveUser(out,user2);
			}
			//写新用户
			saveUser(out,u);
			
			saveFileTail(out);
			out.close();
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
	private void saveFileHeader(PrintWriter out) throws Exception{
		out.println("<?xml version=\"1.0\" encoding=\"GBK\"?>");
		out.println("<Users>");
	}
	private void saveFileTail(PrintWriter out) throws Exception{
		out.println("</Users>");
	}
	private void saveUser(PrintWriter out,User u){
		out.println("\t<User>");
		out.println("\t\t<userName>"+u.getUserName()+"</userName>");
		out.println("\t\t<password>"+u.getPassword()+"</password>");
		out.println("\t\t<name>"+u.getName()+"</name>");
		out.println("\t\t<classNumber>"+u.getClassNumber()+"</classNumber>");
		out.println("\t\t<email>"+u.getEmail()+"</email>");
		out.println("\t\t<phone>"+u.getPhone()+"</phone>");
		out.println("\t</User>");
	}
}

⌨️ 快捷键说明

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