class Aws::Xml::Parser

A SAX-style XML parser that uses a shape context to handle types.

def engine

Returns:
  • (Class) - Returns the default parsing engine.
def engine
  set_default_engine unless @engine
  @engine
end

def engine= engine

Parameters:
  • engine (Symbol, Class) --
def engine= engine
  @engine = Class === engine ? engine : load_engine(engine)
end

def initialize(rules, options = {})

Parameters:
  • rules (Seahorse::Model::ShapeRef) --
def initialize(rules, options = {})
  @rules = rules
  @engine = options[:engine] || self.class.engine
end

def load_engine(name)

def load_engine(name)
  require "aws-sdk-core/xml/parser/engines/#{name}"
  const_name = name[0].upcase + name[1..-1] + 'Engine'
  const_get(const_name)
end

def parse(xml, target = nil, &unhandled_callback)

Returns:
  • (Structure) -

Parameters:
  • target (Structure) -- (nil)
  • xml (String) -- An XML document string to parse.
def parse(xml, target = nil, &unhandled_callback)
  xml = '<xml/>' if xml.nil? or xml.empty?
  stack = Stack.new(@rules, target, &unhandled_callback)
  @engine.new(stack).parse(xml.to_s)
  stack.result
end

def set_default_engine

def set_default_engine
  [:ox, :oga, :libxml, :nokogiri, :rexml].each do |name|
    @engine ||= try_load_engine(name)
  end
  unless @engine
    raise 'Unable to find a compatible xml library. ' \
    'Ensure that you have installed or added to your Gemfile one of ' \
    'ox, oga, libxml, nokogiri or rexml'
  end
end

def try_load_engine(name)

def try_load_engine(name)
  load_engine(name)
rescue LoadError
  false
end