Skip to content

Instantly share code, notes, and snippets.

@pauldix
Created January 16, 2009 14:27
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pauldix/47938 to your computer and use it in GitHub Desktop.
Save pauldix/47938 to your computer and use it in GitHub Desktop.
module Feedzirra
class AtomEntry
include SAXMachine
element :title
# the :as argument makes this available through atom_entry.author instead of .name
element :name, :as => :author
element "feedburner:origLink", :as => :url
element :summary
element :content
element :published
end
# Class for parsing Atom feeds
class Atom
include SAXMachine
element :title
# the :with argument means that you only match a link tag that has an attribute of :type => "text/html"
# the :value argument means that instead of setting the value to the text between the tag,
# it sets it to the attribute value of :href
element :link, :value => :href, :as => :url, :with => {:type => "text/html"}
element :link, :value => :href, :as => :feed_url, :with => {:type => "application/atom+xml"}
elements :entry, :as => :entries, :class => AtomEntry
end
end
# you can then parse like this
feed = Atom.parse(xml_text)
# then you're ready to rock
feed.title # => whatever the title of the blog is
feed.url # => the main url of the blog
feed.feed_url # => goes to the feedburner feed
feed.entries.first.title # => title of the first entry
feed.entries.first.author # => the author of the first entry
feed.entries.first.url # => the permalink on the blog for this entry
# etc ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment