Синтаксический анализ атома / RSS-ленты, содержащей несколько тегов <link>с Haml на RoR - PullRequest
1 голос
/ 18 марта 2010

Итак, во-первых, вот фрагмент фида Atom, который я пытаюсь проанализировать:

// 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>

Я вытягиваю фид Атома так,

// 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 голосов
/ 22 марта 2010

Я никогда не использовал SimpleRSS, но, может быть, вы могли бы попробовать Nokogiri или Hpricot ?Затем вы можете выполнить запрос 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.

0 голосов
/ 18 марта 2010

Я не знаком с этим драгоценным камнем, но вы пытались item.links проверить, содержит ли каждый элемент коллекцию ссылок?

...