【问题标题】:Determine if a URL is a Feed [duplicate]确定 URL 是否为 Feed [重复]
【发布时间】:2012-12-04 21:56:12
【问题描述】:

可能重复:
How To Discover RSS Feeds for a given URL

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

Zend Framework 中,可以将URL 导入为feed

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 是否是一个提要?

【问题讨论】:

    标签: java php zend-framework feed


    【解决方案1】:

    我要做的是把它送到rome 并尝试解析它。如果解析失败,会抛出 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;
        }
    
    }
    

    【讨论】:

    • 我试试看,谢谢!
    • 实际上他们的网站并没有完全正常工作,我想要一个示例代码。
    • 自爆@jidma!
    【解决方案2】:

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

    【讨论】:

    • Zend Framework 是开源的,这就是为什么我想知道它如何获取文档内容或如果它不是提要则失败.. 我不确定 xml 文档是否必要一个提要。
    • @jidma 没错,但我所说的“解析”并不是说,你只是看看,不管它是不是 xml,因为那里有很多 xml 格式;)我的意思是,您应该将文档解析为提要,并且当它起作用时,它可能是提要。例如,一个 rss-feed 有一个 <rss>-element 作为它的根。这是一个非常、非常的好提示;)
    • 提要 (atom/rss) 是具有特定 DTD/模式的 XML 文档。
    • @BryanH 至少 slashdot-example 不包括 DTD 或模式定义。现在,你将矛头指向它:它甚至没有定义根命名空间 O_o
    • 因此,即使通过查看 XML 内部,我们也无法确定它是否是提要:-/
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 也是一个好主意,但你不能依赖它。以问题 (rss.slashdot.org/Slashdot/slashdot) 为例:它以 mime 类型返回 text/html。好的,我们都知道,这是错误的,但这无济于事;)
    • 我有 Content-Type: text/xml; 用于此提要:feeds2.feedburner.com/9GAG ..
    • @KingCrunch 我们不能依赖标准?! xkcd.com/927 叹息... :)
    • @BryanH 如果我们可以依赖标准,那么我们就不会努力让 JS 与 IE 兼容..
    • @BryanH 这更像是“我们不能在 every 情况下依赖 every 标准”。内容类型通常是错误的,因为许多网站只是忘记设置它,然后网络服务器采用他们的标准设置。例如,与内容类型相比,您可以更多地依赖 XML(甚至 HTML(5))。另外:该漫画不适合出现“标准”的任何上下文;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2013-06-02
    • 2023-03-11
    • 1970-01-01
    • 2010-09-20
    • 2010-09-30
    • 2014-08-03
    相关资源
    最近更新 更多