# XMLRPC::XMLParser::StreamParserMixin (Module)

In: | xmlrpc/parser.rb

## Methods

character endElement new startElement

## Attributes

fault | [R] |
method_name | [R] |
params | [R] |

## Public Class methods

new(*a)

[Source]

    # File xmlrpc/parser.rb, line 488
          def initialize(*a)
            super(*a)
            @params = []
            @values = []
            @val_stack = []

            @names = []
            @name = []

            @structs = []
            @struct = {}

            @method_name = nil
            @fault = nil

            @data = nil
          end

## Public Instance methods

startElement(name, attrs=[])

[Source]

    # File xmlrpc/parser.rb, line 506
          def startElement(name, attrs=[])
            @data = nil
            case name
            when "value"
              @value = nil
            when "nil"
              raise "wrong/unknown XML-RPC type 'nil'" unless Config::ENABLE_NIL_PARSER
              @value = :nil
            when "array"
              @val_stack << @values
              @values = []
            when "struct"
              @names << @name
              @name = []

              @structs << @struct
              @struct = {}
            end
          end

endElement(name)

[Source]

    # File xmlrpc/parser.rb, line 526
          def endElement(name)
            @data ||= ""
            case name
            when "string"
              @value = @data
            when "i4", "int"
              @value = Convert.int(@data)
            when "boolean"
              @value = Convert.boolean(@data)
            when "double"
              @value = Convert.double(@data)
            when "dateTime.iso8601"
              @value = Convert.dateTime(@data)
            when "base64"
              @value = Convert.base64(@data)
            when "value"
              @value = @data if @value.nil?
              @values << (@value == :nil ? nil : @value)
            when "array"
              @value = @values
              @values = @val_stack.pop
            when "struct"
              @value = Convert.struct(@struct)

              @name = @names.pop
              @struct = @structs.pop
            when "name"
              @name[0] = @data
            when "member"
              @struct[@name[0]] = @values.pop

            when "param"
              @params << @values[0]
              @values = []

            when "fault"
              @fault = Convert.fault(@values[0])

            when "methodName"
              @method_name = @data
            end

            @data = nil
          end

character(data)

[Source]

    # File xmlrpc/parser.rb, line 571
          def character(data)
            if @data
              @data << data
            else
              @data = data
            end
          end

[Validate]