2

这是我尝试解析的提要的结构:

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">
<channel>
<title>
  title..
</title>
<atom:link href="http://url/news/feed/" rel="self" type="application/rss+xml"/>
<link>http://url</link>
<description>
  … description...
</description>
<lastBuildDate>Tue, 20 Nov 2012 14:37:30 +0000</lastBuildDate>
<language>sk-SK</language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<generator>http://wordpress.org/?v=3.4.2</generator>
<item>
<title>title</title>
<link>
   link
</link>
<comments>
   link to comments
</comments>
<pubDate>Tue, 20 Nov 2012 13:29:05 +0000</pubDate>
<dc:creator>fcomp</dc:creator>
<category>
<![CDATA[ Novinky ]]>
</category>
<guid isPermaLink="false">http://url/?p=560</guid>
<description>
<![CDATA[
<p>text
]]>
<![CDATA[
  text
]]>
</description>
<content:encoded>
<![CDATA[
  text
]]>
</content:encoded>
<wfw:commentRss>
  url
</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
...

以及我如何解析它:

  def rss_feed
    feed = Feedzirra::Feed.fetch_and_parse("http://url/news/feed/")
    feed.entries.each do |entry|
      puts entry.inspect
    end
  end

这段代码让我工作了很长时间,但现在我检查了这段代码的输出,输出是:

undefined method `entries' for nil:NilClass

我不知道,为什么突然代码不起作用,RSS仍然有相同的输出。这是一个错误Feedzirra还是哪里可能有问题?

最终,有没有什么好的替代Feedzirra宝石?我读过类似的问题有更多的开发人员,但我没有找到错误消息的原因......

4

2 回答 2

0

我有同样的问题。在我的意外中,它是错误的提要 url(我想解析),因此,变量feed为 nil,它被称为此错误。

尝试检查您的网址。

于 2013-09-15T14:45:47.090 回答
0

Feedzirra 提供了一个 sanitize 方法,应该在解析条目数据之前使用,如下所示:

feed.sanitize_entries!

此外,提要可以并且确实提供可变的输入数据。在访问它们之前检查条目和字段是否有 nil 或其他意外数据是谨慎的做法。

于 2013-10-04T16:05:03.243 回答