class Nokogiri::XML::SAX::Parser
This parser is a SAX
style parser that reads it’s input as it deems necessary. The parser takes a Nokogiri::XML::SAX::Document
, an optional encoding, then given an XML
input, sends messages to the Nokogiri::XML::SAX::Document
.
Here is an example of using this parser:
# Create a subclass of Nokogiri::XML::SAX::Document and implement # the events we care about: class MyDoc < Nokogiri::XML::SAX::Document def start_element name, attrs = [] puts "starting: #{name}" end def end_element name puts "ending: #{name}" end end # Create our parser parser = Nokogiri::XML::SAX::Parser.new(MyDoc.new) # Send some XML to the parser parser.parse(File.open(ARGV[0]))
For more information about SAX
parsers, see Nokogiri::XML::SAX
. Also see Nokogiri::XML::SAX::Document
for the available events.
Constants
- ENCODINGS
-
Encodinds this parser supports
Attributes
document[RW]
The Nokogiri::XML::SAX::Document
where events will be sent.
encoding[RW]
The encoding beings used for this document.
Public Class Methods
new(doc = Nokogiri::XML::SAX::Document.new, encoding = "UTF-8")
click to toggle source
Create a new Parser
with doc
and encoding
# File lib/nokogiri/xml/sax/parser.rb, line 72 def initialize(doc = Nokogiri::XML::SAX::Document.new, encoding = "UTF-8") @encoding = check_encoding(encoding) @document = doc @warned = false end
Public Instance Methods
parse(thing, &block)
click to toggle source
Parse given thing
which may be a string containing xml, or an IO object.
# File lib/nokogiri/xml/sax/parser.rb, line 81 def parse(thing, &block) if thing.respond_to?(:read) && thing.respond_to?(:close) parse_io(thing, &block) else parse_memory(thing, &block) end end
parse_file(filename) { |ctx| ... }
click to toggle source
Parse a file with filename
# File lib/nokogiri/xml/sax/parser.rb, line 99 def parse_file(filename) raise ArgumentError unless filename raise Errno::ENOENT unless File.exist?(filename) raise Errno::EISDIR if File.directory?(filename) ctx = ParserContext.file(filename) yield ctx if block_given? ctx.parse_with(self) end
parse_io(io, encoding = @encoding) { |ctx| ... }
click to toggle source
Parse given io
# File lib/nokogiri/xml/sax/parser.rb, line 91 def parse_io(io, encoding = @encoding) ctx = ParserContext.io(io, ENCODINGS[check_encoding(encoding)]) yield ctx if block_given? ctx.parse_with(self) end
parse_memory(data) { |ctx| ... }
click to toggle source
# File lib/nokogiri/xml/sax/parser.rb, line 109 def parse_memory(data) ctx = ParserContext.memory(data) yield ctx if block_given? ctx.parse_with(self) end