Skip to content

murakmii/nokogireader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nokogireader

DSL for parsing xml using Nokogiri::XML::Reader

Installation

Add this line to your application's Gemfile:

gem 'nokogireader'

Example

class Rss2 < Nokogireader::Reader
  element :rss, attr: [:version] do
    element :channel do
      elements :item do
        element :title
        element :link
      end
    end
  end
end

data = Rss2.new.read(File.open('rss2.xml'))
puts "Version: #{data.rss.attributes[:version]}"
puts "Items: #{data.rss.channel.item.size}"
data.rss.channel.item.each do |item|
  puts " > #{item.title.text}"
end

You can use after callback and dont_store_data to reduce memory usage.

class Rss2 < Nokogireader::Reader
  element :rss, attr: [:version] do
    element :channel do
      elements :item do
        dont_store_data
        element :title
        element :link

        after do |reader, item|
          puts "Title: #{item.title.text}"
        end
      end
    end
  end
end

data = Rss2.new.read(File.open('rss2.xml'))
puts "Items: #{data.rss.channel.item.size}" # => 0. If specified "dont_store_data", data isn't stored.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/bonono/nokogireader.

License

The gem is available as open source under the terms of the MIT License.

About

DSL for parsing xml using Nokogiri::XML::Reader

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages