Nokogiri::XML::SAX::PushParser
class Nokogiri::XML::SAX::PushParser
PushParser can parse a document that is fed to it manually. It must be given a SAX::Document object which will be called with SAX events as the document is being parsed.
Calling #<< writes XML to the parser, calling any SAX callbacks it can.
#finish tells the parser that the document is finished and calls the end_document SAX method.
Example:
parser = PushParser.new(Class.new(XML::SAX::Document) { def start_document puts "start document called" end }.new) parser << "<div>hello<" parser << "/div>" parser.finish
Attributes
The Nokogiri::XML::SAX::Document on which the PushParser will be operating
Public Class Methods
Create a new PushParser with doc
as the SAX Document, providing an optional file_name
and encoding
# File lib/nokogiri/xml/sax/push_parser.rb, line 34 def initialize(doc = XML::SAX::Document.new, file_name = nil, encoding = 'UTF-8') @document = doc @encoding = encoding @sax_parser = XML::SAX::Parser.new(doc) ## Create our push parser context initialize_native(@sax_parser, file_name) end
Public Instance Methods
Finish the parsing. This method is only necessary for Nokogiri::XML::SAX::Document#end_document to be called.
# File lib/nokogiri/xml/sax/push_parser.rb, line 54 def finish write '', true end
static VALUE get_options(VALUE self) { xmlParserCtxtPtr ctx; Data_Get_Struct(self, xmlParserCtxt, ctx); return INT2NUM(ctx->options); }
static VALUE set_options(VALUE self, VALUE options) { xmlParserCtxtPtr ctx; Data_Get_Struct(self, xmlParserCtxt, ctx); if (xmlCtxtUseOptions(ctx, (int)NUM2INT(options)) != 0) rb_raise(rb_eRuntimeError, "Cannot set XML parser context options"); return Qnil; }
Write a chunk
of XML to the PushParser. Any callback methods that can be called will be called immediately.
# File lib/nokogiri/xml/sax/push_parser.rb, line 46 def write chunk, last_chunk = false native_write(chunk, last_chunk) end
© 2008–2016 Aaron Patterson, Mike Dalessio, Charles Nutter, Sergio Arbeo
Patrick Mahoney, Yoko Harada, Akinori Musha, John Shahid
Licensed under the MIT License.