Skip to content

Instantly share code, notes, and snippets.

@joaovitor
Created February 23, 2011 13:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joaovitor/840444 to your computer and use it in GitHub Desktop.
Save joaovitor/840444 to your computer and use it in GitHub Desktop.
nokogiri-sax.rb
require 'nokogiri'
class DocumentHandler < Nokogiri::XML::SAX::Document
attr_reader :opened, :closed
def initialize
@level = 0
@opened = 0
@closed = 0
end
def start_element(name, attributes)
@level += 1
@opened += 1
puts %Q{start_element -->>> #{"\t"*@level}name=[#{name}], attributes=[#{attributes.inspect}] -> level=[#{@level}]}
end
def end_element(name)
@closed += 1
puts %Q{end_element -->>> #{"\t"*@level}name=[#{name}] -> level=[#{@level}]}
@level -= 1
end
end
file=ARGV.shift
sax_handler = DocumentHandler.new
parser = Nokogiri::XML::SAX::Parser.new(sax_handler)
parser.parse_file(file)
puts "sax_handler.opened=[#{sax_handler.opened}]"
puts "sax_handler.closed=[#{sax_handler.closed}]"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment