Ива*_*вац 7 ruby xpath ruby-on-rails nokogiri
我正在尝试解析Youtube Gdata以查看是否存在具有给定ID的视频.但是没有正常的标签,但有命名空间.在链接http://gdata.youtube.com/feeds/api/videos?q=KgfdlZuVz7I上有标记:
<openSearch:totalResults>1</openSearch:totalResults>
Run Code Online (Sandbox Code Playgroud)
有命名空间openSearch:
xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在Nokogiri和Ruby中处理它.
这是代码的一部分:
xmlfeed = Nokogiri::HTML(open("http://gdata.youtube.com/feeds/api/videos?q=#{video_id}"))
xmlfeed.at_xpath("openSearch:totalResults")
Run Code Online (Sandbox Code Playgroud)
它给出了错误:
Undefined namespace prefix: openSearch:totalResults
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,但似乎你必须删除名称空间前缀来获取节点:
xmlfeed.at_xpath("//totalresults")
Run Code Online (Sandbox Code Playgroud)
还要注意我添加了双正斜杠,它将搜索范围限定在整个文档上(如果没有它,它将无法工作).
更新:
基于这个答案:我如何让Nokogiri理解我的命名空间?我猜测namespace(openSearch:totalResults)没有被正确地声明为文档根节点上的属性,因此Nokogiri只是忽略它,这就是上面的选择器工作但命名空间的选择器不工作的原因.
| 归档时间: |
|
| 查看次数: |
7721 次 |
| 最近记录: |