Итак, во-первых, вот фрагмент фида 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;ref=rss" rel="alternate" /> <link href="http://somelink.com/link2&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 /
Я никогда не использовал 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.
Я не знаком с этим драгоценным камнем, но вы пытались item.links проверить, содержит ли каждый элемент коллекцию ссылок?
item.links