7

Youtube Gdataを解析して、指定されたIDのビデオが存在するかどうかを確認しようとしています。ただし、通常のタグはありませんが、名前空間があります。リンクhttp://gdata.youtube.com/feeds/api/videos?q=KgfdlZuVz7Iにタグがあります:

<openSearch:totalResults>1</openSearch:totalResults>

名前空間openSearchがあります:

xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'

でも、のこぎりとルビーでどう対処したらいいのかわからない。

コードの一部は次のとおりです。

xmlfeed = Nokogiri::HTML(open("http://gdata.youtube.com/feeds/api/videos?q=#{video_id}"))
xmlfeed.at_xpath("openSearch:totalResults")

エラーが発生します:

Undefined namespace prefix: openSearch:totalResults
4

1 に答える 1

6

理由はわかりませんが、ノードを取得するには名前空間プレフィックスを削除する必要があるようです。

xmlfeed.at_xpath("//totalresults")

また、ドキュメント全体の検索範囲を指定する二重スラッシュを追加したことにも注意してください(これがないと機能しません)。

更新

この回答に基づく:Nokogiriに自分の名前空間を理解させるにはどうすればよいですか?openSearch:totalResults名前空間( )がドキュメントのルートノードで属性として正しく宣言されていないため、Nokogiriはそれを無視していると思います。そのため、上記のセレクターは機能しますが、名前空間は機能しません。

于 2012-09-18T04:37:29.320 に答える