0

可能重复:
如何发现给定 URL 的 RSS 提要

给定一个 URL,我想知道它是否是一个提要。

Zend Framework中,可以将 URL 作为提要导入:

try {
    $slashdotRss =
        Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // feed import failed
    echo "Exception caught importing feed: {$e->getMessage()}\n";
    exit;
}

如果抛出异常,那么我知道 URL 不是提要。

我想在 Java 中做同样的算法,所以我的问题是:Zend 如何知道一个 URL 是否是一个提要?

4

3 回答 3

1

在浏览器中打开 url 并查看源代码。您会注意到,它是一个具有特定格式的 xml 文档(它在某处被标准化。谷歌为它)。Zend 框架(注意,Zend 是一家公司)可能会尝试解析此文档。当它不是有效的提要时,它显然会失败。

于 2012-12-17T19:00:36.327 回答
1

我要做的就是把它送到罗马并尝试解析它。如果解析失败,则会抛出 FeedException:

public boolean tryFeed(String feedUrl) throws IOException,MalformedURLException { 
    SyndFeedInput input = new SyndFeedInput();
    SyndFeed feed = null;
    try {
        feed = input.build(new XmlReader(new URL(feedUrl)));
        return true;
    } catch (FeedException e) {
        // Feed's invalid
        return false;
    }

}
于 2012-12-17T21:20:52.043 回答
0

我不熟悉 Zend 的内部结构,但是对于我写过的读者,我通常会寻找 Mime 类型的 application/rss+xml

这是确定资源是什么的标准方法。

当然,一些编程不当/配置不正确的源可能不符合标准,就像可以将 PNG 文件的 mime 类型设置为text/javascript或同样无意义的东西一样。

作为后备,解析文件是一种可行的方法,假设提要已正确格式化。

于 2012-12-17T19:00:44.677 回答