package util;
import bean.RecentContent;
import java.io.FileWriter;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class RecentContentDao
{
private String filePath = "../data/RecentContent.xml";
public ArrayList selectAll()
{
ArrayList rcArrayList = new ArrayList();
try {
SAXReader reader = new SAXReader();
InputStream file = super.getClass().getResourceAsStream(this.filePath);
Document document = reader.read(file);
Element root = document.getRootElement();
for (Iterator i = root.elementIterator("内容"); i.hasNext(); ) {
Element content = (Element)i.next();
RecentContent rc = new RecentContent();
rc.setCid(content.elementText("编号"));
rc.setTitle(content.elementText("标题"));
rc.setDetail(content.elementText("详细"));
rc.setDate(content.elementText("时间"));
rc.setSample(content.elementText("简介"));
rcArrayList.add(rc);
}
file.close();
} catch (Exception e) {
e.printStackTrace();
}
return rcArrayList;
}
[color=red]public boolean updateContent(String cid, String title, String detail, String date, String sample) {
boolean success = false;
try {
XMLWriter writer = null;
URL url = super.getClass().getResource(this.filePath);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
SAXReader reader = new SAXReader();
InputStream file = super.getClass().getResourceAsStream(this.filePath);
Document document = reader.read(file);
Element root = document.getRootElement();
for (Iterator i = root.elementIterator("内容"); i.hasNext(); ) {
Element content = (Element)i.next();
if (!(content.attributeValue("cid").equals(cid))) break label216;
content.selectSingleNode("标题").setText(title);
content.selectSingleNode("详细").setText(detail);
content.selectSingleNode("时间").setText(date);
content.selectSingleNode("简介").setText(sample);
writer = new XMLWriter(new FileWriter(url.getFile()), format);
writer.write(document);
writer.close();
success = true;
label216: break;
}
file.close();
} catch (Exception e) {
e.printStackTrace();
}
return success;
}[/color]
public RecentContent selectByCid(String cid) {
RecentContent rc = null;
try {
SAXReader reader = new SAXReader();
InputStream file = super.getClass().getResourceAsStream(this.filePath);
Document document = reader.read(file);
Element root = document.getRootElement();
for (Iterator i = root.elementIterator("内容"); i.hasNext(); ) {
Element content = (Element)i.next();
if (!(content.attributeValue("cid").equals(cid))) break label155;
rc = new RecentContent();
rc.setCid(content.elementText("编号"));
rc.setTitle(content.elementText("标题"));
rc.setDetail(content.elementText("详细"));
rc.setDate(content.elementText("时间"));
label155: rc.setSample(content.elementText("简介"));
}
file.close();
} catch (Exception e) {
e.printStackTrace();
}
return rc;
}
}
上面这个代码中红色部分 第一次执行会修改RecentContent.xml 但是第二次执行修改之后会把第一次修改过的内容变回来。。。