posts - 15,comments - 65,trackbacks - 0
         欢迎光临笔者博客http://www.lovestblog.cn
        最近两天本人在为本博实现rss发布和订阅,本来是想在前端实现xml的生成和修改,因为用as3的E4X操作xml比较方便,但是后面发现不能为元素设置CDATA值,于是只好作罢,便只能依靠后台的java来实现此功能了,当然操作xml的话,我首先想到了dom4j,dom4j操作xml还是比较方便的,即可以轻松实现我们的CDATA设置,也可以为我们任意位置插入元素提供了实现,对于在指定位置新增节点开始我有点蒙了,后面通过网上搜索资源加之自己的一些理解,而实现了此功能,下面展示了部分代码供今后参考吧:
  1. public static int createXMLFile(String filename,List list){   
               
    /** 返回操作结果, 0表失败, 1表成功 */  
               
    int returnValue = 0;    
               Document document 
    = DocumentHelper.createDocument();   
               Element rssElement 
    = document.addElement("rss");   
               rssElement.addAttribute(
    "version""2.0");     
               Element channelElement 
    = rssElement.addElement("channel");   
               Element titleElement 
    = channelElement.addElement("title");   
               titleElement.setText(
    "你假笨(nijiaben)心情技术博客");    
                  
               Element linkElement 
    = channelElement.addElement("link");   
               linkElement.setText(
    "http://www.lovestblog.cn");   
                  
               Element descriptionElement 
    = channelElement.addElement("description");   
               descriptionElement.setText(
    "专注于Java,Flex技术开发研究");   
                  
               Element languageElement 
    = channelElement.addElement("language");   
               languageElement.setText(
    "zh-cn");   
                  
               Element lastBuildDateElement 
    = channelElement.addElement("lastBuildDate");   
               lastBuildDateElement.setText(
    new java.text.SimpleDateFormat("yyyy-mm-dd hh:mm:ss",Locale.CHINA).format(((ArticleInfo)(list.get(0))).getCreateTime()));             
                        
               
    for(int i=list.size()-1;i>0;i--){   
                   ArticleInfo ainfo
    =(ArticleInfo)(list.get(i));   
                   Element itemElement 
    = channelElement.addElement("item");   
                   Element title1Element 
    = itemElement.addElement("title");   
                   title1Element.setText(ainfo.getTitle());   
                   Element description1Element 
    = itemElement.addElement("description");   
                   
    int maxLen=5000;   
                   
    if(ainfo.getRssContent().length()<5000){   
                       maxLen
    =ainfo.getRssContent().length();   
                   }
       
                   description1Element.addCDATA(ainfo.getRssContent().substring(
    0, maxLen));          
                   Element pubDate
    =itemElement.addElement("pubDate");   
                   pubDate.setText(
    new java.text.SimpleDateFormat("yyyy-mm-dd hh:mm:ss",Locale.CHINA).format(ainfo.getCreateTime()));                     
                   Element link1Element
    =itemElement.addElement("link");   
                   link1Element.setText(
    "http://www.lovestblog.cn");   
               }
       
               
    try{   
                   
    /** 将document中的内容写入文件中 */  
                   XMLWriter writer 
    = new XMLWriter(new FileOutputStream(path+filename));   
                   writer.write(document);   
                   writer.close();   
                   
    /** 执行成功,需返回1 */  
                   returnValue 
    = 1;   
               }
    catch(Exception ex){   
                   ex.printStackTrace();   
               }
       
               
    return returnValue;   
            }
      
posted on 2010-04-01 12:14 你假笨 阅读(3069) 评论(1)  编辑  收藏

FeedBack:
# re: dom4j在指定位置新增节点
2010-04-01 22:22 | rox
曾经因为工作需要打算写一个针对web.xml的修改类,可以随意的插入filter和listener,后来作罢。博主加油!  回复  更多评论
  

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


网站导航: