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 + -
显示快捷键?