Ruby RSS::Parser.to_自动失败?
我正在使用Ruby 1.8.7的RSS::Parser,它是stdlib的一部分。我对Ruby不熟悉 我想解析RSS提要,对数据进行一些更改,然后将其输出(作为RSS) 说我可以使用“#to_s”,但它似乎对某些提要有效,但对其他提要无效 这项工作:Ruby RSS::Parser.to_自动失败?,ruby,parsing,rss,Ruby,Parsing,Rss,我正在使用Ruby 1.8.7的RSS::Parser,它是stdlib的一部分。我对Ruby不熟悉 我想解析RSS提要,对数据进行一些更改,然后将其输出(作为RSS) 说我可以使用“#to_s”,但它似乎对某些提要有效,但对其他提要无效 这项工作: #!/usr/bin/ruby -w require 'rss' require 'net/http' url = 'http://news.ycombinator.com/rss' feed = Net::HTTP.get_response(
#!/usr/bin/ruby -w
require 'rss'
require 'net/http'
url = 'http://news.ycombinator.com/rss'
feed = Net::HTTP.get_response(URI.parse(url)).body
rss = RSS::Parser.parse(feed, false, true)
# Here I would make some changes to the RSS, but right now I'm not.
p rss.to_s
返回预期的输出:XML文本
这失败了:
#!/usr/bin/ruby -w
require 'rss'
require 'net/http'
url = 'http://feeds.feedburner.com/devourfeed'
feed = Net::HTTP.get_response(URI.parse(url)).body
rss = RSS::Parser.parse(feed, false, true)
# Here I would make some changes to the RSS, but right now I'm not.
p rss.to_s
不返回任何内容(空引号)
但是,如果我将最后一行更改为:
p rss
我可以看到对象中填充了所有提要数据。失败的是to_的方法
据我所知,问题不在
to_s
,而在解析器本身。进入parser.rb代码显示没有返回任何内容,因此返回空字符串是有效的
我建议你看看这样的东西
另外,作为参考,请看一下Ruby的模块,它可以方便地检索web资产,如提要。openuri很简单,但适合大多数任务。HTTP是较低级别的,这需要您键入更多的代码来替换OpenURI的功能。我也遇到了同样的问题,所以我开始调试代码。我认为ruby rss需要的元素太多了。该频道需要有“标题、链接、描述”,如果缺少,则会失败 上面示例中的第二个提要缺少描述,这将导致to_失败 我相信这是一个bug,但我真的不理解代码,几乎不懂ruby,所以谁知道呢。在我看来,即使缺少一些元素,to_s也会尽最大努力,这是很自然的 无论如何 rss.channel.description=“某物” rss.to_ 将“工作” 问题在于def是否有必需的元素 或者在 self.class::MODELS