Nokogiri::XML::SAX::Parser

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'
  check_encoding(encoding)
  @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 80
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 100
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 90
def parse_io io, encoding = 'ASCII'
  check_encoding(encoding)
  @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 109
def parse_memory data
  ctx = ParserContext.memory data
  yield ctx if block_given?
  ctx.parse_with self
end

© 2008–2016 Aaron Patterson, Mike Dalessio, Charles Nutter, Sergio Arbeo
Patrick Mahoney, Yoko Harada, Akinori Musha, John Shahid
Licensed under the MIT License.

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部