Posted on 2010-06-07 15:25
java小爬虫 阅读(4755)
评论(0) 编辑 收藏
package net.better_best.www.dynamicADPics.utils;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;


public class DOM4jUtils
{

/** *//**
* 在一个xml文件中,遍历xml文件,根据Element的elementName,取出所有复合条件的Element元素,把它们转换为javabean类型,并放入List中返回。
*/

public static List parseElementsToObjects(Element root, String elementName)
{
List<Banner> result = new ArrayList<Banner>();
List<Element> list = root.elements(elementName);

for (Element element : list)
{
Banner banner = new Banner();

for(Iterator it=element.attributeIterator();it.hasNext();)
{
Attribute attribute = (Attribute) it.next();

if(attribute.getName().equals(DOM4jConstant.ELEMENT_ATTRIBUTE_BGURL))
{
banner.setBnurl(attribute.getValue());

}else if(attribute.getName().equals(DOM4jConstant.ELEMENT_ATTRIBUTE_IMG))
{
banner.setImg(attribute.getValue());

}else if(attribute.getName().equals(DOM4jConstant.ELEMENT_ATTRIBUTE_BNTARGET))
{
banner.setBntarget(attribute.getValue());
}
}
result.add(banner);
}
return result ;
}

/** *//**
* 根据xml文件的文件名,把xml文件转换成Document对象并返回。
*/

public static Document getDocument(String fileUrl)throws DocumentException
{
File file = new File(fileUrl);
SAXReader reader = new SAXReader();
Document document = reader.read(file);
return document;
}

/** *//**
* 根据root 元素的rootName,Element元素的javabean对象以及Element元素的elementName创建Document对象并返回。
*/


public static Document createDocument(String rootName,Banner banner,String elementName)
{
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement(rootName);
setDocumentHeader(root);
addElement(root,banner,elementName);
return doc;
}

/** *//**
* 根据Element元素的javabean对象以及Element元素的elementName在Element root下增加一个Element 。
*/

public static void addElement(Element root, Banner banner,String elementName)
{
Element element = root.addElement(elementName);
element.addAttribute(DOM4jConstant.ELEMENT_ATTRIBUTE_IMG, banner.getImg()).addAttribute(DOM4jConstant.ELEMENT_ATTRIBUTE_BGURL, banner.getBnurl()).addAttribute(DOM4jConstant.ELEMENT_ATTRIBUTE_BNTARGET, banner.getBntarget()).addText("");
}

/** *//**
* 在Document对象中,以elementName,attributeName,attributeValue为参数删除对应的Element元素。
*/

public static Document removeElementByAttribute(Document document, String elementName,String attributeName,String attributeValue)
{
List<Element> list = document.getRootElement().elements(elementName);

exit: for (Element element : list)
{

for(Iterator it=element.attributeIterator();it.hasNext();)
{
Attribute attribute = (Attribute) it.next();

if(attribute.getName().equals(attributeName)&&attribute.getValue().equals(attributeValue))
{
element.getParent().remove(element);
break exit;
}
}
}
return document ;
}

/** *//**
* 把Document对象与filePath对应的物理文件进行同步。
*/

public static void writeDocumentToFile(Document document, String filePath)throws IOException
{
XMLWriter writer = new XMLWriter(new FileWriter(filePath));
writer.write(document);
writer.flush();
writer.close();
}

/** *//**
* 设置Document对象的文件头。
*/

public static void setDocumentHeader(Element root)
{
Element fixedbn = root.addElement("fixedbn");
fixedbn.addElement("fixedlink").addAttribute("posx", "0")
.addAttribute("posy", "0")
.addAttribute("scalex", "1510")
.addAttribute("scaley", "800")
.addAttribute("bnurl", "http://www.lanrentuku.com/")
.addAttribute("bntarget", "_self")
.addText("");
fixedbn.addElement("fixedlink").addAttribute("posx", "0")
.addAttribute("posy", "80")
.addAttribute("scalex", "1510")
.addAttribute("scaley", "1150")
.addAttribute("bnurl", "http://www.lanrentuku.com/")
.addAttribute("bntarget", "_self")
.addText("");
fixedbn.addAttribute("alpha_num", "0");
}

}
package net.better_best.www.dynamicADPics.utils;


public class DOM4jConstant
{
public static final String ELEMENT_ATTRIBUTE_IMG = "img";
public static final String ELEMENT_ATTRIBUTE_BGURL = "bnurl";
public static final String ELEMENT_ATTRIBUTE_BNTARGET = "bntarget";
public static final String FILE_PATH_NAME = "/WEB-INF/xml.xml";

}




package net.better_best.www.dynamicADPics.utils;


public class Banner
{
private String img;
private String bnurl;
private String bntarget;

public String getImg()
{
return img;
}

public void setImg(String img)
{
this.img = img;
}

public String getBnurl()
{
return bnurl;
}

public void setBnurl(String bnurl)
{
this.bnurl = bnurl;
}

public String getBntarget()
{
return bntarget;
}

public void setBntarget(String bntarget)
{
this.bntarget = bntarget;
}

}

package net.better_best.www.dynamicADPic.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.better_best.www.dynamicADPic.form.DynamicADPicForm;
import net.better_best.www.dynamicADPics.utils.Banner;
import net.better_best.www.dynamicADPics.utils.DOM4jConstant;
import net.better_best.www.dynamicADPics.utils.DOM4jUtils;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.dom4j.Document;
import org.dom4j.DocumentException;


public class DynamicADPicAction extends DispatchAction
{
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)

throws Exception
{
return super.execute(mapping, form, request, response);
}

public ActionForward add(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
{
String filePath=request.getRealPath("/")+DOM4jConstant.FILE_PATH_NAME;
Document document = DOM4jUtils.getDocument(filePath);
DynamicADPicForm dynamicADPic = (DynamicADPicForm)form ;
String elementName="banner";
Banner banner = new Banner();
banner.setImg(dynamicADPic.getImg());
banner.setBnurl(dynamicADPic.getBnurl());
banner.setBntarget("_blank");
DOM4jUtils.addElement(document.getRootElement(), banner, elementName);
DOM4jUtils.writeDocumentToFile(document, filePath);
return this.list(mapping, form, request, response);
}

public ActionForward list(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
{
String elementName = "banner";
String filePath=request.getRealPath("/")+DOM4jConstant.FILE_PATH_NAME;
Document document = null;

try
{
document = DOM4jUtils.getDocument(filePath) ;

} catch (DocumentException e)
{
init(request);
document = DOM4jUtils.getDocument(filePath) ;
}
List list = DOM4jUtils.parseElementsToObjects(document.getRootElement(), elementName);
request.setAttribute("piclist", list);
request.getSession().setAttribute("n", request.getParameter("n"));
return mapping.findForward("list");
}

public ActionForward delete(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
{
String filePath=request.getRealPath("/")+DOM4jConstant.FILE_PATH_NAME;
Document document = DOM4jUtils.getDocument(filePath);
document = DOM4jUtils.removeElementByAttribute(document, "banner", "img", request.getParameter("img"));
DOM4jUtils.writeDocumentToFile(document, filePath);
return this.list(mapping, form, request, response);
}

public void init(HttpServletRequest request) throws Exception
{
Banner banner = new Banner();
banner.setImg("images/01.jpg");
banner.setBnurl("http://www.lanrentuku.com/");
banner.setBntarget("_blank");
String elementName="banner";
String rootName="banner_swf";
Document document = DOM4jUtils.createDocument(rootName, banner, elementName);
String filePath=request.getRealPath("/")+DOM4jConstant.FILE_PATH_NAME;
DOM4jUtils.writeDocumentToFile(document, filePath);
}
}
