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