Using the Pull Parser
This API is experimental, and subject to change.
parser = PullParser.new( "<a>text<b att='val'/>txet</a>" )
while parser.has_next?
  res = parser.next
  puts res[1]['att'] if res.start_tag? and res[0] == 'b'
endSee the PullEvent class for information on the content of the results. The data is identical to the arguments passed for the various events to the StreamListener API.
Notice that:
parser = PullParser.new( "<a>BAD DOCUMENT" )
while parser.has_next?
  res = parser.next
  raise res[1] if res.error?
endNat Price gave me some good ideas for the API.
Methods
    
  
  
    
    Included Modules
    
  
  
    
    
    
    
    
    
      Class Public methods
      
        
            
              new(stream)
            
            Link
          
          
          
            Instance Public methods
      
        
            
              add_listener( listener )
            
            Link
          
          
          
            
            
              each()
            
            Link
          
          
          
            
            
              peek(depth=0)
            
            Link
          
          
          
            
            
              pull()
            
            Link
          
          
          
            # File ../ruby/lib/rexml/parsers/pullparser.rb, line 65 def pull return @my_stack.shift if @my_stack.length > 0 event = @parser.pull case event[0] when :entitydecl @entities[ event[1] ] = event[2] unless event[2] =~ /PUBLIC|SYSTEM/ when :text unnormalized = @parser.unnormalize( event[1], @entities ) event << unnormalized end PullEvent.new( event ) end