123456789_123456789_123456789_123456789_123456789_

Class: XSD::XMLParser::Nokogiri

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, XSD::XMLParser::Parser
Instance Chain:
self, XSD::XMLParser::Parser
Inherits: XSD::XMLParser::Parser
  • ::Object
Defined in: lib/xsd/xmlparser/nokogiri.rb

Overview

Nokogiri XML parser for soap4r.

Nokogiri may be used as the XML parser in soap4r. Simply require ‘xsd/xmlparser/nokogiri’ in your soap4r applications, and soap4r will use Nokogiri as it’s XML parser. No other changes should be required to use Nokogiri as the XML parser.

Example (using UW ITS Web Services):

require 'rubygems'
require 'nokogiri'
gem 'soap4r'
require 'defaultDriver'
require 'xsd/xmlparser/nokogiri'

obj = AvlPortType.new
obj.getLatestByRoute(obj.getAgencies.first, 8).each do |bus|
  p "#{bus.routeID}, #{bus.longitude}, #{bus.latitude}"
end

Class Method Summary

Instance Method Summary

Constructor Details

.new(host, opt = {}) ⇒ Nokogiri

Create a new ::XSD parser with host and opt

[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 31

def initialize(host, opt = {})
  super
  @parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset || "UTF-8")
end

Instance Method Details

#cdata_block(string)

Handle cdata_blocks containing string

[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 63

def cdata_block(string)
  characters(string)
end

#do_parse(string_or_readable)

Start parsing string_or_readable

[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 38

def do_parse(string_or_readable)
  @parser.parse(string_or_readable)
end

#end_element(name)

Handle the end_element event with name

[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 50

def end_element(name)
  super
end

#end_element_namespace(name, prefix = nil, uri = nil)

Called at the end of an element name is the element’s name prefix is the namespace prefix associated with the element uri is the associated namespace URI

[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 91

def end_element_namespace(name, prefix = nil, uri = nil)
  ###
  # Deal with SAX v1 interface
  end_element([prefix, name].compact.join(":"))
end

#error(msg) Also known as: #warning

Handle errors with message msg

Raises:

  • (ParseError)
[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 56

def error(msg)
  raise ParseError, msg
end

#start_element(name, attrs = [])

Handle the start_element event with name and attrs

[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 44

def start_element(name, attrs = [])
  super(name, Hash[*attrs.flatten])
end

#start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = [])

Called at the beginning of an element name is the element name attrs is a list of attributes prefix is the namespace prefix for the element uri is the associated namespace URI ns is a hash of namespace prefix:urls associated with the element

[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 74

def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = []) # rubocop:disable Metrics/ParameterLists
  ###
  # Deal with SAX v1 interface
  name = [prefix, name].compact.join(":")
  attributes = ns.map do |ns_prefix, ns_uri|
    [["xmlns", ns_prefix].compact.join(":"), ns_uri]
  end + attrs.map do |attr|
    [[attr.prefix, attr.localname].compact.join(":"), attr.value]
  end.flatten
  start_element(name, attributes)
end

#warning(msg)

Alias for #error.

[ GitHub ]

  
# File 'lib/xsd/xmlparser/nokogiri.rb', line 59

alias_method :warning, :error