zoukankan      html  css  js  c++  java
  • RSS读取与生成实现原理

    package com.csst.ebt.app;  
    import java.io.StringReader;  
    import java.util.List;  
      
    import net.sf.json.JSONArray;  
      
    import com.rsslibj.elements.Channel;  
    import com.rsslibj.elements.Item;  
    import com.rsslibj.elements.RSSReader;  
      
    import electric.xml.ParseException;  
      
    /*** 
     * rss是什么?      
     *     rss是在线共享内容的一种简易方式(也叫聚合内容,Really Simple Syndication 的简称,通常在 
     *时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最 
     *新更新,其实是一种能跨平台的服务于用户的简单xml文件协议. 
     * 
     *为什么要RSS? 
     *              在这个网络知识繁华的岁月,每个人都希望能快速的知道自己关心的知识,比如我关心x站的x 
     * 一个栏目,我就可以订阅该栏目的rss,如有文章发布,我就能及时的看到更新...中间的商机我就不再赘言了. 
     *  
     *  
     * 目前网上的使用主要分为以下几种: 
     * 1.不同网站中blog的迁移 
     *    如ITEye的blog到ITpub blog数据的迁移 
     * 2.订阅特定网站的信息的更新 
     *    如果订阅特定的网站的blog更新 
     * 3.RSS在线阅读器的使用。 
     *    通过手机等通讯工具在线阅读最新信息 
     *  
     *  
     *  
     * RSS文件结构 
     * 以下以RSS2.0为例说明.rss文件的核心就是xml文件,所以首先必须符合xml的构架格式. 
     *  它是以 
     *<rss version="2.0">...</rss> 
     *这种Root形式的格式. 
     *       rss有一<channel>的子节点,它包含了文件的内容,在<channel>的里面,有好几个元素用以描述信息. 
     * 在站点http://backend.userland.com/rss上有详细的内容,比如以下: 
     *  title:标题,经常还有资料的来源信息 
     *  link:web站点的url地址 
     * description:对网站的一个简单描述. 
     *  每条信息用以<item>元素表示,它被包含在<channel>节点里面,每个<channel>可以有多个<item>,每个<item>节点是真正的节点信息: 
     *  title:列表项目的标题 
     * link:列表项目的web url地址, 
     * description:对列表项目的简短说明, 
     * author:列表信息的作者 
     * pubDate:发布时间. 
     *  这里,有一个很重要的节点就是pubDate的格式,它必须符合RFC 822的标准,查看细节 .开始于三个字母长度的星期,然后是每月的 
     *    天数次序,然后是3个字母的月份,然后是年份,然后是具体的时间,最后是时区. 
     *  
     *  
     * @Title: RSSLibJ的使用 
     * @Description: 使用RSSLibJ生成相关的RSS文件 
     * @Copyright:Copyright (c) 2011 
     * @Company:易程科技股份有限公司 
     * @Date:2012-2-6 
     * @author longgangbai 
     * @version 1.0 
     */  
    public class RSSLibJMain {  
              
            /** 
             * 读取rss的信息 
             * @param context 
             * @throws ParseException 
             */  
            public static void readerRSS(String context) throws ParseException {  
                  
                StringReader reader=new StringReader(context);  
                //创建RSS阅读对象的  
                RSSReader rssReader=new RSSReader();  
                //设置读取内容  
                rssReader.setReader(reader);  
                //获取rss相关的信息  
                Channel channel=rssReader.getChannel();           
                //此处我们紧紧关注item  
                List<Item> itemList=channel.getItems();             
                  
                if(itemList!=null){  
                  for (Item item : itemList) {  
                      String slink=item.getLink();  
                      String title=item.getTitle();  
                      String author=item.getDcContributor()==null?item.getDcCreator():item.getDcContributor();  
                      String descption=item.getDescription();  
                  }  
                }  
            }  
      
            /** 
             * 创建一个自定义的RSS的 
             * @return 
             * @throws InstantiationException 
             * @throws IllegalAccessException 
             * @throws ClassNotFoundException 
             */  
            public static String writerRSS() throws InstantiationException,  
                    IllegalAccessException, ClassNotFoundException {  
                Channel channel=new Channel();  
                channel.setDescription("This is my sample channel.");  
                channel.setLink("http://localhost:8080/");  
                channel.setTitle("My Channel");  
                channel.setImage("http://localhost/",   
                        "The Channel Image",   
                        "/images/logo.png");  
                channel.setTextInput("http://localhost/search",   
                        "Search The Channel Image",   
                        "The Channel Image",   
                        "s");  
                channel.addItem("http://localhost:8080/item1",  
                        "The First Item covers details on the first item>",  
                        "The First Item")  
                        .setDcContributor("Joseph B. Ottinger");  
                channel.addItem("http://localhost:8080/item2",  
                        "The Second Item covers details on the second item",  
                        "The Second Item")  
                        .setDcCreator("Jason Bell");       
                return channel.getFeed("rdf");  
            }  
      
    }  
  • 相关阅读:
    js-高级06-正则
    js-高级05-javaScript处理机制
    js-高级04-函数高级应用
    js-高级03-面向对象的继承
    js-高级02-贪吃蛇案例分析
    js-高级01面向对象及创建对象
    js-API 06 高级动画二
    js-API 05 高级动画
    对象数组 数组对象 增删改查 数组
    jQuery ajax请求 一般请求和自定义请求
  • 原文地址:https://www.cnblogs.com/zuge/p/6297221.html
Copyright © 2011-2022 走看看