如果有网址,我想知道它是否是Feed。
在Zend Framework中,可以将网址导入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不是Feed。
我想在Java中使用相同的算法,所以我的问题是:Zend如何知道URL是否是feed?
答案 0 :(得分:1)
在浏览器中打开网址并查看来源。你会注意到,它是一个具有特定格式的xml文档(它在某处标准化。谷歌为它)。什么Zend框架(注意,Zend是一家公司)可能会尝试解析这个文档。当它不是有效的饲料时,它显然会失败。
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
我对Zend的内部结构并不熟悉,但对于我写过的读者,我通常会寻找Mime类型 的 application/rss+xml 强>
这是确定资源是什么的标准方法。
当然,一些编程不当/配置不当的源可能不符合标准,就像可以将PNG文件的mime类型设置为text/javascript
或同样非感性的东西一样。 / p>
作为后备,解析文件是一种可行的方法,假设Feed已正确格式化。