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

📄 xmldao.java

📁 聊天工具
💻 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 + -