in reply to record-by-record XML parsing
It very depends if you need to have access to all records (random access) after parsing or if you need just to iterate from first record to last record, like stream. In the second case, every parser producing events should satisfy you - I would use XML::Parser::Expat, because I am familiar with it.