Sha256: 0359e3b50d5164e63650732dd4891fb63fcd53406192c92b2c7bd31b7c401fff

Contents?: true

Size: 1.88 KB

Versions: 17

Compression:

Stored size: 1.88 KB

Contents

require 'nokogiri'

module XSD # :nodoc:
  module XMLParser # :nodoc:
    ###
    # 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 Nokogiri < XSD::XMLParser::Parser
      ###
      # Create a new XSD parser with +host+ and +opt+
      def initialize host, opt = {}
        super
        @parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset || 'UTF-8')
      end

      ###
      # Start parsing +string_or_readable+
      def do_parse string_or_readable
        @parser.parse(string_or_readable)
      end

      ###
      # Handle the start_element event with +name+ and +attrs+
      def start_element name, attrs = []
        super(name, Hash[*attrs.flatten])
      end

      ###
      # Handle the end_element event with +name+
      def end_element name
        super
      end

      ###
      # Handle errors with message +msg+
      def error msg
        raise ParseError.new(msg)
      end
      alias :warning :error

      ###
      # Handle cdata_blocks containing +string+
      def cdata_block string
        characters string
      end

      %w{ start_document start_element_namespace end_element_namespace end_document comment }.each do |name|
        class_eval %{ def #{name}(*args); end }
      end
      add_factory(self)
    end
  end
end

Version data entries

17 entries across 17 versions & 4 rubygems

Version Path
akamai_bookmarklet-0.1.2 vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/xsd/xmlparser/nokogiri.rb
akamai_bookmarklet-0.1.1 vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/xsd/xmlparser/nokogiri.rb
akamai_bookmarklet-0.1.0 vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/xsd/xmlparser/nokogiri.rb
superfeedr-nokogiri-1.4.0.20091116183308 lib/xsd/xmlparser/nokogiri.rb
caring-nokogiri-1.4.1.pre1 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.4.0-java lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.4.0-x86-mswin32 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.4.0-x86-mingw32 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.4.0 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.3.3-x86-mswin32 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.3.3-x86-mingw32 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.3.3-java lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.3.2-x86-mswin32 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.3.2-x86-mingw32 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.3.2-java lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.3.2 lib/xsd/xmlparser/nokogiri.rb
nokogiri-1.3.3 lib/xsd/xmlparser/nokogiri.rb