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
Create a new XSD parser with host
and opt
# File lib/xsd/xmlparser/nokogiri.rb, line 29 def initialize host, opt = {} super @parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset || 'UTF-8') end
Handle cdata_blocks containing string
# File lib/xsd/xmlparser/nokogiri.rb, line 61 def cdata_block string characters string end
Start parsing string_or_readable
# File lib/xsd/xmlparser/nokogiri.rb, line 36 def do_parse string_or_readable @parser.parse(string_or_readable) end
Handle the #end_element event with name
# File lib/xsd/xmlparser/nokogiri.rb, line 48 def end_element name super end
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
# File lib/xsd/xmlparser/nokogiri.rb, line 89 def end_element_namespace name, prefix = nil, uri = nil ### # Deal with SAX v1 interface end_element [prefix, name].compact.join(':') end
Handle errors with message msg
# File lib/xsd/xmlparser/nokogiri.rb, line 54 def error msg raise ParseError.new(msg) end
Handle the #start_element event with name
and attrs
# File lib/xsd/xmlparser/nokogiri.rb, line 42 def start_element name, attrs = [] super(name, Hash[*attrs.flatten]) end
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
# File lib/xsd/xmlparser/nokogiri.rb, line 72 def start_element_namespace name, attrs = [], prefix = nil, uri = nil, ns = [] ### # Deal with SAX v1 interface name = [prefix, name].compact.join(':') attributes = ns.map { |ns_prefix,ns_uri| [['xmlns', ns_prefix].compact.join(':'), ns_uri] } + attrs.map { |attr| [[attr.prefix, attr.localname].compact.join(':'), attr.value] }.flatten start_element name, attributes end
© 2008–2016 Aaron Patterson, Mike Dalessio, Charles Nutter, Sergio Arbeo
Patrick Mahoney, Yoko Harada, Akinori Musha, John Shahid
Licensed under the MIT License.