A method of converting an
XML file to a table having rows and columns, the
XML file having a plurality of elements, each element having an
XPath, comprising: (a) determining row-terminating conditions using a structure of the
XML file and a plurality of column data sources; (b) determining a scope for each of said elements in the XML file; (c) testing one of said elements in the XML file to determine if said tested element matches one of said column data sources, and if said tested element matches one of said column data sources, storing said element in a table cache, updating the columns that are within said scope of said tested element, and storing said tested element in a prototype row; and when exiting said tested element, passing a depth associated with said tested element to said table cache; (d) determining if said tested element matches one of said row-terminating conditions, and if said tested element matches a row-terminating condition, and the said tested element is in said prototype row, then writing said prototype row to said table cache; (e) determining if the scope of one of said column
data source matches the tested element, and if so, erasing a column in said prototype row corresponding to said tested element; (f) repeating steps (c) through (e) until each element of the XML file has been tested; and (g)
copying the prototype row to the table cache.