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);
           
        }

}



只有注册用户登录后才能发表评论。


网站导航: