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.
Encodinds this parser supports
The Nokogiri::XML::SAX::Document where events will be sent.
The encoding beings used for this document.
Create a new Parser with doc and encoding
# File lib/nokogiri/xml/sax/parser.rb, line 70 def initialize doc = Nokogiri::XML::SAX::Document.new, encoding = 'UTF-8' @encoding = check_encoding(encoding) @document = doc @warned = false end
Parse given thing which may be a string containing xml, or an IO object.
# File lib/nokogiri/xml/sax/parser.rb, line 79
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 a file with filename
# File lib/nokogiri/xml/sax/parser.rb, line 98 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 given io
# File lib/nokogiri/xml/sax/parser.rb, line 89 def parse_io io, encoding = 'ASCII' @encoding = check_encoding(encoding) ctx = ParserContext.io(io, ENCODINGS[@encoding]) yield ctx if block_given? ctx.parse_with self end
# File lib/nokogiri/xml/sax/parser.rb, line 107 def parse_memory data ctx = ParserContext.memory data yield ctx if block_given? ctx.parse_with self end
© 2008–2017 Aaron Patterson, Mike Dalessio, Charles Nutter, Sergio Arbeo
Patrick Mahoney, Yoko Harada, Akinori Musha, John Shahid
Licensed under the MIT License.