📄 xmldao.java
字号:
package server.dao;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import utils.UserInfoBean;
/**
* XML数据库访问对象
* @author 洪景泉
*
*/
public class XMLDAO implements UserDAO {
private String url;
public XMLDAO() {
this.url=".XML/user.xml";
}
/**
* 插入用户
*/
public void insert(UserInfoBean userBean) {
SAXReader xmlReader=new SAXReader();//获取XML解析器
try {
//读取原始数据。到内存中,即标识文件对象到内存中
Document document=xmlReader.read(url);
Element root=document.getRootElement();
//在内存原有数据上加上新数据,先加上user节点到tusers中
Element userE=root.addElement("user");
userE.addElement("ID").addText(userBean.getSID());//将USER下的子节点信息加入到新USER中去
userE.addElement("NAME").addText(userBean.getSName());
userE.addElement("NICKNAME").addText(userBean.getSNickName());
userE.addElement("PASSWORD").addText(userBean.getSPassword());
userE.addElement("SEX").addText(userBean.getSSex());
userE.addElement("AGE").addText(String.valueOf(userBean.getNAge()));
userE.addElement("TELEPHONE").addText(userBean.getSPhone());
userE.addElement("DEPARTMENT").addText(userBean.getSDepartment());
userE.addElement("ADDRESS").addText(userBean.getSAddress());
userE.addElement("NISONLINE").addText("0");
userE.addElement("LASTLTIME").addText("");
userE.addElement("LOGINCOUNT").addText("0");
userE.addElement("REGTIME").addText(String.valueOf(userBean.getDRegTime()));
userE.addElement("ICON").addText(userBean.getSIcon());
//将内存中数据保存在文件中去
try {
FileWriter fw=new FileWriter(url);
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
format.setIndent(true);
XMLWriter xw=new XMLWriter(fw,format);
xw.write(document);
xw.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 更新用户信息
*/
public void update(UserInfoBean userBean) {
try {
SAXReader xmlReader=new SAXReader();
Document document=xmlReader.read(url);
Element root=document.getRootElement();
Iterator users=root.elementIterator("user");
while(users.hasNext()){
Element userE=(Element)users.next();
if(userE.valueOf("ID").equals(userBean.getSID())){
userE.selectSingleNode("NAME").setText(userBean.getSName());
userE.selectSingleNode("NICKNAME").setText(userBean.getSNickName());
userE.selectSingleNode("PASSWORD").setText(userBean.getSPassword());
userE.selectSingleNode("SEX").setText(userBean.getSSex());
userE.selectSingleNode("AGE").setText(String.valueOf(userBean.getNAge()));
userE.selectSingleNode("TELEPHONE").setText(userBean.getSPhone());
userE.selectSingleNode("DEPARTMENT").setText(userBean.getSDepartment());
userE.selectSingleNode("ADDRESS").setText(userBean.getSAddress());
userE.selectSingleNode("ICON").setText(userBean.getSIcon());
}
FileWriter fw=new FileWriter(url);
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
format.setIndent(true);
XMLWriter xmlw=new XMLWriter(fw,format);
xmlw.write(document);
xmlw.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除用户
*/
public void delete(List list) {
SAXReader saxReader = new SAXReader();
try {
Document doc = saxReader.read(new File(url));
Element root = doc.getRootElement(); // 获取根结点
List userList = root.selectNodes("/tusers/user");
for (int i = 0; i < userList.size(); i++) {
Element user = (Element) userList.get(i);
for(int j=0;j<list.size();j++){
if (user.elementText("ID").equals((String)list.get(j))) {
root.remove(user);//删除
}
}
}
// 输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); // 设置编码
format.setIndent("\t"); // 设置缩进
// 输出到文件
XMLWriter writer;
try {
writer = new XMLWriter(new FileOutputStream("./user.xml"),format);
writer.write(doc);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 重置密码
*/
public void resetPWD() {
try {
SAXReader xmlReader=new SAXReader();
Document document=xmlReader.read(url);
Element root=document.getRootElement();
Iterator users=root.elementIterator("user");
while(users.hasNext()){
Element userE=(Element)users.next();
userE.selectSingleNode("PASSWORD").setText("123456");
FileWriter fw=new FileWriter("./user.xml");
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
format.setIndent(true);
XMLWriter xmlw=new XMLWriter(fw,format);
xmlw.write(document);
xmlw.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 返回最大ID
*/
public String getMaxID() {
try {
SAXReader xmlReader=new SAXReader();
Document document=xmlReader.read("./user.xml");
Element root=document.getRootElement();
Iterator users=root.elementIterator("user");
String maxID=users.hasNext() ? ((Element)users.next()).valueOf("ID"):"10001";
while(users.hasNext()){
Element userE=(Element)users.next();
if(Integer.parseInt(userE.valueOf("ID"))>Integer.parseInt(maxID)){
maxID=userE.valueOf("ID");
}
}
return maxID;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 更新用户在线状态
*/
public void updateOnLine(String id, String flag) {
try {
SAXReader xmlReader=new SAXReader();
Document document=xmlReader.read(url);
Element root=document.getRootElement();
Iterator users=root.elementIterator("user");
while(users.hasNext()){
Element userE=(Element)users.next();
if(userE.valueOf("ID").equals(id)){
userE.selectSingleNode("nisonLine").setText(flag);
}
FileWriter fw=new FileWriter("./user.xml");
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
format.setIndent(true);
XMLWriter xmlw=new XMLWriter(fw,format);
xmlw.write(document);
xmlw.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 查找
*/
public Vector<Vector<String>> select(String colList,Map<String,String> sqlMap){
// Vector<Vector<String>> vData = new Vector<Vector<String>>();
// SAXReader saxReader = new SAXReader();
// try {
// Document doc = saxReader.read(new File("./XML/user.xml"));
// Element root = doc.getRootElement(); // 获取根结点
// List userList = root.selectNodes("/tusers/user");
// for (int i = 0; i < userList.size(); i++) {
// Vector<String> vRow = new Vector<String>();
// Element user = (Element) userList.get(i);
// Iterator iter = user.elementIterator();
//
// while (iter.hasNext()) {
//
// Element element = (Element) iter.next();
// if (element.elementText("ID").equals("10001")) {
//
// }
// vRow.add(element.getText());
// }
// vData.add(vRow);
// // System.out.println(user.element("SID").getText());
// // System.out.println(user);
// }
//
//
// Element user = (Element) userList.get(i);
// if (user.elementText("SID").equals("10001")) {
//
//
// } catch (DocumentException e) {
// e.printStackTrace();
// }
//
// return vData;
return null;
}
/**
* 更新客户端修改的信息
*/
public void updateClient(UserInfoBean userBean) {
try {
SAXReader xmlReader=new SAXReader();
Document document=xmlReader.read(url);
Element root=document.getRootElement();
Iterator users=root.elementIterator("user");
while(users.hasNext()){
Element userE=(Element)users.next();
if(userE.valueOf("ID").equals(userBean.getSID())){
userE.selectSingleNode("NICKNAME").setText(userBean.getSNickName());
userE.selectSingleNode("PASSWORD").setText(userBean.getSPassword());
userE.selectSingleNode("AGE").setText(String.valueOf(userBean.getNAge()));
userE.selectSingleNode("TELEPHONE").setText(userBean.getSPhone());
userE.selectSingleNode("DEPARTMENT").setText(userBean.getSDepartment());
userE.selectSingleNode("ADDRESS").setText(userBean.getSAddress());
userE.selectSingleNode("ICON").setText(userBean.getSIcon());
}
FileWriter fw=new FileWriter(url);
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
format.setIndent(true);
XMLWriter xmlw=new XMLWriter(fw,format);
xmlw.write(document);
xmlw.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -