在RoR上使用Haml解析包含多个<link />标记的atom / rss feed

时间:2010-03-18 11:15:30

标签: ruby-on-rails parsing rss haml

所以,首先,这是我要解析的Atom feed代码段:

// http://somelink.com/atom   
<feed xmlns="http://www.w3.org/2005/Atom">
    <entry>
        <title>Title Here</title>
        <link href="http://somelink.com/link1&amp;amp;ref=rss" rel="alternate" />
        <link href="http://somelink.com/link2&amp;amp;ref=rss" rel="tag:somelink.com/apply_url"/>
    ...
    </entry>

我像这样拉动Atom,

// In controller index method
@rss = SimpleRSS.parse open('http://somelink.com/atom')

然后我在视图中输出响应,我正在使用Haml编写,如下所示:

- @rss.entries.each do |item|
  .title-div
    = item.title
  .title-link
    = item.link //outputs the first link

我可以为链接运行第二个循环,但有没有办法获得没有它的第二个链接?喜欢阅读“rel”属性并输出正确的链接?我如何在Haml / Rails中执行此操作?

编辑:我正在使用的宝石:http://simple-rss.rubyforge.org/

2 个答案:

答案 0 :(得分:0)

我不熟悉那个宝石,但您是否尝试item.links查看每个项目是否提供了一系列链接?

答案 1 :(得分:0)

我从未使用过SimpleRSS,但您可以试试NokogiriHpricot吗?您可以运行XPath查询,仅选择具有正确属性的链接。 Nokogiri的一个例子:

atom_doc = Nokogiri::XML(open("http://www.example.com/atom.xml"))
atom_doc.xpath("/xmlns:feed/xmlns:entry/xmlns:link[@rel='tag:somelink.com/apply_url']")

如果要解析Atom提要,请不要忘记命名空间。