def process_response(path_to_response, transaction_listener, batch_listener = nil)
      reader = LibXML::XML::Reader.file(path_to_response)
      reader.read # read into the root node
      #if the response attribute is nil, we're dealing with an RFR and everything is a-okay
      if reader.get_attribute('response') != "0" and reader.get_attribute('response') != nil then
        raise RuntimeError,  "Error parsing Litle Request: " + reader.get_attribute("message")
      end

      reader.read
      count = 0
      while true and count < 500001 do

        count += 1
        if(reader.node == nil) then
          return false
        end

        case reader.node.name.to_s
          when "batchResponse"
            reader.read
          when "litleResponse"
            return false
          when "text"
            reader.read
          else
            xml = reader.read_outer_xml
            duck = Crack::XML.parse(xml)
            duck[duck.keys[0]]["type"] = duck.keys[0]
            duck = duck[duck.keys[0]]
            transaction_listener.apply(duck)
            reader.next
        end
      end
    end
def process_response(path_to_response, transaction_listener, batch_listener = nil)
      reader = LibXML::XML::Reader.file(path_to_response)
      reader.read # read into the root node
      #if the response attribute is nil, we're dealing with an RFR and everything is a-okay
      if reader.get_attribute('response') != "0" and reader.get_attribute('response') != nil then
        raise RuntimeError,  "Error parsing Litle Request: " + reader.get_attribute("message")
      end

      reader.read
      count = 0
      while true and count < 500001 do

        count += 1
        if(reader.node == nil) then
          return false
        end

        case reader.node.name.to_s
          when "batchResponse"
            reader.read
          when "litleResponse"
            return false
          when "text"
            reader.read
          else
            xml = reader.read_outer_xml
            duck = Crack::XML.parse(xml)
            duck[duck.keys[0]]["type"] = duck.keys[0]
            duck = duck[duck.keys[0]]
            transaction_listener.apply(duck)
            reader.next
        end
      end
    end
Params:
 +path_to_response+:: The path to a specific .asc file to process
 +transaction_listener+:: A listener to be applied to the hash of each transaction
 (see +DefaultLitleListener+)
 +batch_listener+:: An (optional) listener to be applied to the hash of each batch.
 Note that this will om-nom-nom quite a bit of memory