messagexmldao.java

来自「java qq 实现点对点聊天功能 并提供服务器端聊天室元代码」· Java 代码 · 共 93 行

JAVA
93
字号
package dao.impl;

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import model.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import dao.*;

public class MessageXmlDao implements MessageDao{
	private String name;

	public MessageXmlDao(String name) {
		super();
		this.name = name;
	}
	public ArrayList loadMessages() {
		ArrayList messages = new ArrayList();

		Document doc = null;
		try {
			DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
			DocumentBuilder b = fact.newDocumentBuilder();
			doc = b.parse(name);
		} catch (Exception e1) {
			e1.printStackTrace();
			return messages;
		}
		NodeList nl = doc.getElementsByTagName("Message");
		for (int i = 0; i < nl.getLength(); i++) {
			Element e = (Element) nl.item(i);
			String sendid = this.getText(e, "sendid");
			String receiveid = this.getText(e, "receiveid");
			String message = (this.getText(e, "message"));
			String comment= this.getText(e, "comment");
			Message m = new Message();
			m.setSendid(Integer.parseInt(sendid));
			m.setReceiveid(Integer.parseInt(receiveid));
			m.setMessage(message);
			m.setComment(comment);
			messages.add(m);
		}
		return messages;
	}

	public void saveMessages(ArrayList m) {
		PrintWriter out = null;
		try {
			try {
				out = new PrintWriter(name,"unicode");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			out.println("<?xml version=\"1.0\" ?>");
			out.println("<Messages>");

			Iterator it = m.iterator();
			while (it.hasNext()) {
				Message a = (Message) it.next();
				out.println("\t<Message>");
				out.println("\t\t<sendid>" + a.getSendid() + "</sendid>");
				out.println("\t\t<receiveid>" + a.getReceiveid() + "</receiveid>");
				out.println("\t\t<message>" + a.getMessage() + "</message>");
				out.println("\t\t<comment>" + a.getComment() + "</comment>");
				out.println("\t</Message>");
			}
			out.println("</Messages>");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			out.close();
		}
	}

	// 得到e下边的tagName子标记,获取其文本内容
	private String getText(Element e, String tagName) {
		NodeList nl = e.getElementsByTagName(tagName);
		Element e2 = (Element) nl.item(0);
		return e2.getTextContent().trim();
	}
}

⌨️ 快捷键说明

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