`
bdk82924
  • 浏览: 563275 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

RSS的读取和发布

    博客分类:
  • Web
 
阅读更多
这几天研究了RSS

RSS(简易信息聚合,也叫聚合内容)是一种描述和同步网站内容的格式。RSS可以是以下三个解释的其中一个: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary。但其实这三个解释都是指同一种Syndication的技术。RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0。使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。


要研究的问题
1、如何读取RSS,比如sina提供了一个RSS,我如何读取这些信息
2、我自己有一个WEB应用,如何发布RSS
3、使用哪些工具可以聚合RSS


第一个问题,我们可以使用开源的jar包  rome-1.0.jar 、jdom.jar
参考地址:
直接上代码吧

import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Properties;

import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

/**
 * 
 * 查询rss
 * 
 * @author bdk197431
 * @date 2013-1-21 上午11:40:25
 * 
 * @version 1.0
 */
public class Test1
{
    public static void main(String[] args) throws Exception
    {

       
        // 设置代理服务器
        Properties systemSettings = System.getProperties();

        systemSettings.put("http.proxyHost", "101.11.11.1");

        systemSettings.put("http.proxyPort", "80");

        System.setProperties(systemSettings);

        //

        URL feedUrl = new URL("http://rss.sina.com.cn/news/marquee/ddt.xml");

        SyndFeedInput input = new SyndFeedInput();

        SyndFeed feed = input.build(new XmlReader(feedUrl));

        //
        URLConnection feedUrlConn = new URL("http://rss.sina.com.cn/news/marquee/ddt.xml").openConnection();

        feedUrlConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

        SyndFeedInput input2 = new SyndFeedInput();

        SyndFeed feed2 = input2.build(new XmlReader(feedUrl));

        // 查询所有 rss
        List list = feed2.getEntries();

        for (int i = 0; i < list.size(); i++)
        {

            SyndEntry entry = (SyndEntry) list.get(i);
            System.out.println(entry);
            System.out.println("------------------");
        }
    }
}




第二个问题:

可以用java代码生成xml文件,这样不知道是否可以发布RSS,

import java.io.FileWriter;
import java.io.Writer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.sun.syndication.feed.synd.SyndContent;
import com.sun.syndication.feed.synd.SyndContentImpl;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndFeedImpl;
import com.sun.syndication.io.SyndFeedOutput;

public class RssWrite
{

    public static void main(String[] args) throws Exception
    {
        DateFormat dateParser = new SimpleDateFormat("yyyyMMddhhmmss");

        SyndFeed feed = new SyndFeedImpl();
        feed.setFeedType("rss_2.0");
        feed.setTitle("Sample Feed (created with Rome)");
        feed.setLink("http://rome.dev.java.net");
        feed.setDescription("This feed has been created using Rome (Java syndication utilities");

        List<SyndEntry> entries = new ArrayList<SyndEntry>();
        SyndEntry entry;
        SyndContent description;

        // item 内容
        // 重复add产生多个item
        entry = new SyndEntryImpl();
        entry.setTitle("Rome v1.0");
        entry.setLink("http://wiki.java.net/bin/view/Javawsxml/Rome01");
        entry.setPublishedDate(new Date());
        description = new SyndContentImpl();
        description.setType("text/plain");
        description.setValue("hello caohaigang");
        entry.setDescription(description);
        entries.add(entry);

        feed.setEntries(entries);

        String fileName = "c:\\rss\\feed" + dateParser.format(new Date()) + ".xml";
        Writer writer = new FileWriter(fileName);
        SyndFeedOutput output = new SyndFeedOutput();
        output.output(feed, writer);
        writer.close();

        System.out.println("The feed has been written to the file [" + fileName + "]");
    }
}




<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Sample Feed (created with Rome)</title>
    <link>http://rome.dev.java.net</link>
    <description>This feed has been created using Rome (Java syndication utilities</description>
    <item>
      <title>Rome v1.0</title>
      <link>http://wiki.java.net/bin/view/Javawsxml/Rome01</link>
      <description>hello caohaigang</description>
      <pubDate>Mon, 21 Jan 2013 11:52:52 GMT</pubDate>
      <guid>http://wiki.java.net/bin/view/Javawsxml/Rome01</guid>
      <dc:date>2013-01-21T11:52:52Z</dc:date>
    </item>
  </channel>
</rss>




补充一点: 生成出来的XML,在IE8下面可以正常显示RSS ,不过到Goole chmod下显示失败 ,在网上搜索资料后 在xml的第二行增加
<?xml-stylesheet type="text/xsl" href="rss.xslt"?>




第三个问题
有人说用抓虾,不过这是很早以前的事情,听说最近都快关门了
FeedDemon 、Google Reader ,可以使用下看看
  • 大小: 55.4 KB
  • 大小: 53.8 KB
分享到:
评论

相关推荐

    RSS读取、生成通用类

    RSS读取和生成是处理这些数据的关键环节。以下将详细介绍标题和描述中提到的RSS通用类,并结合提供的文件名进行解析。 1. **RssReader.cs**: 这个类通常包含了读取RSS源的逻辑。它可能提供了方法,如`LoadFromUrl`...

    小型RSS读取,例子

    综上所述,这个“小型RSS读取”示例主要涵盖了HTTP请求、XML解析、数据绑定以及简单的用户交互逻辑。通过学习和实践这个例子,开发者可以更好地理解RSS技术在C#中的应用,并为进一步开发功能丰富的RSS阅读器打下基础...

    RSS发布(生成XML)和读取URL

    标题中的“RSS发布(生成XML)”和“读取URL”主要涉及的是RSS(Really Simple Syndication)技术,这是一种网络内容发布的格式,常用于博客、新闻网站等,使得用户可以通过RSS阅读器订阅并获取更新信息。RSS的核心是...

    java实现rss的发布和订阅

    在Java中实现RSS的发布和订阅,需要理解RSS的结构以及如何使用Java处理XML。 RSS的核心结构包括频道(Channel)和条目(Item)。频道包含有关整个源的信息,如标题、描述和链接,而条目则代表单独的新闻或文章,每...

    RSS的读取并且显示

    2. **RSS读取** - 读取RSS feed首先需要解析XML文件。在Python中,可以使用`feedparser`库,它能自动处理不同版本和变体的RSS feed。 - 使用`feedparser.parse(url)`方法,传入RSS feed的URL,即可获取到一个解析...

    rss读取新闻和图片的例子

    RSS读取文本新闻和图片新闻,解决了rss时间上各个feed发布的时间不一致的问题。 &lt;br&gt;里面的RssReader为获取rss频道的主程序,如果想获取其他rss频道的内容,请修改此程序。 &lt;br&gt;程序运行部署在jsp服务器上即可...

    C# RSS阅读器 能添加和阅读订阅

    RSS是一种XML格式,用于发布新闻、博客和其他定期更新的内容,使得用户可以方便地获取并聚合来自多个来源的信息。这款C# RSS阅读器通过解析RSS feed,将内容以友好的方式呈现给用户,从而帮助用户跟踪他们感兴趣网站...

    rss读取

    在IT行业中,RSS(Really Simple Syndication)是一种用于发布和订阅网络内容的标准化格式,它以XML(Extensible Markup Language)文件的形式存在。通过解析和读取RSS feed,用户可以获取到网站的最新更新,无需...

    JSP读取RSS实例

    它提供了方便的API,可以简化RSS和Atom的读取、写入和转换。在本例中,可能通过ROME库将RSS URL加载为` SyndFeed`对象,然后遍历其内容,如`SyndEntry`对象来显示RSS条目。 **WEB-INF**目录是JSP应用的标准部分,它...

    rome-1.0 jdom 第一个RSS发布实例

    标题中的“rome-1.0 jdom 第一个RSS发布实例”揭示了本次讨论的主要内容,涉及到两个关键的Java库——Rome和JDOM,以及如何使用它们来创建和发布RSS(Really Simple Syndication) feed。RSS是一种XML格式,用于发布...

    读取RSS数据显示在页面上

    在IT行业中,RSS(Really Simple Syndication)是一种用于发布和订阅网络内容的标准化格式,它使得用户无需直接访问网站就能获取最新的文章、博客更新或新闻。本教程将深入讲解如何根据RSS网址读取数据并将其显示在...

    读取RSS-SAX解析XML实例(java版)

    RSS是一种用于发布新闻、博客和其他定期更新内容的格式,通常用于订阅和聚合信息源。RSS文件通常包含标题、摘要、链接等元素,使得用户可以通过RSS阅读器获取并跟踪感兴趣的信息源的最新内容。 在Java中,读取RSS...

    RSS代码RSS 代码RSS 代码RSS 代码

    【描述】:“RSS(Really Simple Syndication)是一种用于发布和订阅信息的XML格式,它使得用户可以方便地获取网站的更新内容,如新闻、博客文章等。RSS代码是实现RSS订阅功能的核心,通过解析RSS feed,用户可以将...

    读取RSS资源实例rss_reader

    在Android平台上,RSS(Really Simple Syndication)是一种广泛使用的数据格式,用于订阅和获取网站的最新内容,如新闻、博客文章或播客。本实例"rss_reader"是针对这一功能的实现,它允许用户轻松地浏览和阅读RSS源...

    RSS阅读发布工具开发文档

    2. **XML解析**:RSS feed基于XML格式,因此,需要使用XML解析库来读取和处理RSS源。在不同的编程语言中,如Python有`feedparser`库,JavaScript有`xml2js`,Java有`JAXB`等。 3. **内容抓取**:RSS阅读器需要能够...

    javascript读取RSS数据

    1. **RSS**:RSS是一种XML格式的数据文件,用于发布和聚合新闻提要或博客文章等内容。 2. **XML**:一种标记语言,用于定义和存储数据,结构类似于HTML但更加灵活且专注于数据描述而非展示。 3. **JavaScript**:一...

    RSS是RSS的jar包

    - 读取RSS feed:解析XML文档,提取频道信息和条目详情。 - 创建RSS feed:构造RSS结构,添加频道和条目信息,生成XML输出。 - 更新RSS feed:修改现有RSS feed的内容,如添加、删除或更新条目。 - 集成RSS功能:将...

    深入研究RSS和Atom

    RSS(Really Simple Syndication)和Atom是两种广泛使用的Web内容发布和订阅协议,它们使得用户可以方便地跟踪和获取网络上的更新信息,如博客文章、新闻报道、播客等。这两种格式都允许内容创作者提供一个标准化的...

Global site tag (gtag.js) - Google Analytics