1

ワシントンポストの政治RSSフィードをRailsアプリに表示しようとしています。

wp_url = 'http://feeds.washingtonpost.com/rss/politics'
open(wp_url) do |rss|
  @wp_feed = RSS::Parser.parse(rss)
end

そのコードで、私はエラーを受け取ります:

attribute <url> is missing in tag <source>

私は何が間違っているのですか?

4

1 に答える 1

5

このエラーは、外部フィードが無効な場合に発生します。
この場合、RSSには要素に必要なurl属性が含まれていません。<source>

要素のRSS2.0仕様に<source>よると、

<source>のオプションのサブ要素です<item>

その値は、アイテムの元となったRSSチャネルの名前であり、その値から派生しています。urlこれには、ソースのXML化にリンクする1つの必須属性があります。

<source url="http://www.tomalak.org/links2.xml">Tomalak's Realm</source>

この要素の目的は、リンクのクレジットを広め、ニュースアイテムのソースを公表することです。アグリゲーターのPostコマンドで使用できます。アイテムをアグリゲーターからウェブログオーサリングツールに転送するときに自動的に生成される必要があります。

Ruby 1.9.3ドキュメントで説明されているRSSクラスはparse次のデフォルトパラメータを使用してそのメソッドを説明しています。

parse(rss, do_validate=true, ignore_unknown_element=true, parser_class=default_parser)

したがって、このような検証エラーを無視する場合はfalse、2番目のパラメーターとして渡すと、次のように外部RSSフィードを読み取ることになります。

require 'rss'
wp_url = open('http://feeds.washingtonpost.com/rss/politics').read
@wp_rss = RSS::Parser.parse(wp_url, false)
于 2012-09-01T18:57:42.393 に答える