随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
下面用一个公告实例显示dom4j的使用:将公告信息保存到xml文件中。
index.jsp:用于收集公告信息
<%@ page language="java" import="java.util.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>起始页</title>
</head>
<body>
<form name="form1" method="post" action="PlacardServlet" target="_blank" onsubmit="return check(this)">
公告标题:<input name="title" type="text" id="title" size="52">
公告内容:<textarea name="content" cols="50" rows="9" id=content></textarea>
<input name="Submit" type="submit" class="btn_grey" value="保存">
<input name="Submit2" type="reset" class="btn_grey" value="重置">
</form>
</body>
</html>
PlacardServlet.java:
package com.home.web.servlet;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
* Servlet implementation class PlacardServlet
*/
@WebServlet("/PlacardServlet")
public class PlacardServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public PlacardServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
String fileUrl = request.getRealPath("/xml/placard.xml");
File file = new File(fileUrl);
String title = request.getParameter("title");
String content = request.getParameter("content");
Document document = null;
Element placard = null;
DateFormat df = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分");
if (!file.exists()) {
document = DocumentHelper.createDocument();
placard = DocumentHelper.createElement("placard");
document.setRootElement(placard);
placard.addAttribute("version", "2.0");
Element description = placard.addElement("description");
description.setText("公告栏");
Element createTime = placard.addElement("createTime");
createTime.setText("创建于" + df.format(new Date()));
} else {
SAXReader reader = new SAXReader();
try {
document = reader.read(new File(fileUrl));
placard = document.getRootElement();
} catch (Exception e) {
e.printStackTrace();
}
}
/********* 添加公告信息 **********/
String id = String.valueOf(placard.elements("info").size() + 1);
Element info = placard.addElement("info");
info.addAttribute("id", id);
Element title_info = info.addElement("title");
title_info.setText(title);
Element content_item = info.addElement("content");
content_item.addCDATA(content);
Element pubDate_item = info.addElement("pubDate");
df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
pubDate_item.setText(df.format(new Date()));
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
try {
XMLWriter writer=new XMLWriter(new FileWriter(fileUrl), format);
writer.write(document);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("xml/placard.xml").forward(request, response);
}
}
注意要现在该实例根目录下创建xml文件夹,不需要创建XML文件
效果: