登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

清风幻影的博客

Where there is love, I will be there.

 
 
 

日志

 
 
关于我

同是天涯沦落人,相逢何必曾相识. 天生我材必有用,千金散尽还复来. 天若有情天亦老,人间正道是沧桑. 月影西斜人已去, 堤上梅花情依旧, 此情故已成追忆, 美人如玉夜留香

DOM4J 工具类(以对象的方式增加和删除XML元素)  

2010-06-10 10:58:51|  分类: java_5 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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);
           
        }

}

  评论这张
 
阅读(1678)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018