W3cubDocs

/Nokogiri

class Nokogiri::XML::SAX::Parser

Parent:
Object

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') Show source

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

Public Instance Methods

parse(thing, &block) Show source

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_file(filename) { |ctx| ... } Show source

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_io(io, encoding = 'ASCII') { |ctx| ... } Show source

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
parse_memory(data) { |ctx| ... } Show source
# 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.