首页 > 其他分享 >DOM4J 工具类(以对象的方式增加和删除XML元素)

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

时间:2023-06-15 12:05:43浏览次数:54  
标签:XML Document String 删除 DOM4J import document banner public


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

标签:XML,Document,String,删除,DOM4J,import,document,banner,public
From: https://blog.51cto.com/u_16065168/6486071

相关文章

  • Java_Dom4j_解析xml
    via:http://blog.163.com/kewangwu@126/blog/static/8672847120126261033594/ 1、DOM4J简介DOM4J是dom4j.org出品的一个开源XML解析包。DOM4J应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。Dom:把整个文档作为一个对象。DOM4J最大的特色是使用大量的接口......
  • web.xml加载详解
    一 1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点。2、紧急着,容器创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。 3、容器将<context-param>转换为键值对,并交给servletContext。 4......
  • es根据条件删除文档
     在es7.17.0中根据某个字段删除文档,原生语法还有nest怎么写?1在Elasticsearch7.17.0中,可以使用以下原生语法来根据某个字段删除文档:23```4DELETE/myindex/_doc/_delete_by_query5{6"query":{7"term":{8"myfield":"myvalue"9......
  • python list 从列表A删除列表B的几种方法
    问题描述:a=['a','b','c','d','e','f']b=['a','c','d']想要得到一个列表C=a-b的元素即c=['b','e','f']转换成集合删除c=list(set(a).difference......
  • [C语言/PTA] 单链表结点删除
    题目要求本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:structListNode{intdata;ListNode*next;};函数接口定义:structListNode*readlist();structListNode*deletem(structListNode*L,intm);......
  • EasyCVR删除没有“国标设备编号”的黑名单,提示内容undefined该如何解决?
    EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。有用户反馈,在EasyCVR平台中,当删除没有“国标设备编号”的黑名单,弹出的提示有异......
  • EasyCVR删除没有“国标设备编号”的黑名单,提示内容undefined该如何解决?
    EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。有用户反馈,在EasyCVR平台中,当删除没有“国标设备编号”的黑名单,弹出的提示有......
  • C# xml序列化和反序列化
    **以前没有用C#定义的反序列化方式来定义对象,都是直接操作的xml元素,在用到Newlife.Core时,有用到既有属性又有值形式的xml反序列化对应对象定义例如:<catid="1">猫</cat>publicclassCat{[XmlAttribute]publicStringid{get;set;}[XmlTex......
  • jexcel_删除行并同步数据库
    写在*.aspx中1//删除行OK2varmyDeleteRow=function(){3varDBID=document.getElementById("my_textbox").value;4//vartempConfirm=confirm("DBID为:"+DBID);//弹出确认框5vartempConfirm=confir......
  • 算法面试之道:在O(1)的时间内删除单链接链表的指定节点
    对于一个单项链接的链表,给定其中某个任意节点,要求在O(1)的时间复杂度内删除该节点。表面上看起来,似乎不可能做到,因为如果要求时间复杂度是O(1)的话,那意味着,算法实现中,不得包含有任何循环或是对链表的整体遍历。但问题在于,要删除某个指定节点,我们需要通过遍历,找到该节点的前节点,然......