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

私がすることは、それをローマに持って行き、それ解析しようとすることです. 解析に失敗すると、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 に答える
1

ブラウザで URL を開き、ソースを確認します。これは特定の形式の xml ドキュメントであることに気付くでしょう (どこかで標準化されています。Google で検索してください)。Zend フレームワーク (Zend は企業であることに注意してください) がおそらく行うことは、このドキュメントを解析しようとすることです。有効なフィードでない場合、明らかに失敗します。

于 2012-12-17T19:00:36.327 に答える
0

私は Zend の内部構造に詳しくありませんが、私が書いた読者のために、私は通常、Mime タイプ application/rss+xmlを探します

これは、リソースが何であるかを判断する標準的な方法です。

もちろん、PNG ファイルの MIME タイプを に設定しtext/javascriptたり、同様に無意味なものに設定したりできるのと同じように、プログラミングが不十分で不適切に構成されたソースの中には、標準に準拠していないものもあります。

フォールバックとして、フィードが適切にフォーマットされていれば、ファイルの解析が実行可能な方法です。

于 2012-12-17T19:00:44.677 に答える