1. A method for generating metadata from a data file, the method comprising the steps of: parsing a data file including data nodes arranged in a hierarchal structure by sequentially processing the data nodes to generate parsing events, a parsing event comprising a data node extracted from the data file; calling back at least one parsing event to a scanner; processing by the scanner the at least one parsing event by calling at least one corresponding function; flagging, by the scanner, repeating data nodes and adding a reference to each of the repeating data nodes into a repeat list; generating a linear list of metadata from the processed at least one parsing event, the linear list of metadata indicating the hierarchal structure of the data nodes and including only a single instance of each flagged repeating data node, the linear list being separate from the repeat list; and preserving the hierarchal structure of the data nodes.