1. A method for making a parser for use in extracting record data from a set of XML documents with similar structure, the method comprising the steps of: a. identifying simple XPaths in the sample document; b. forming complex XPaths and clustering the complex XPaths by common substructure; c. scoring simple XPaths based on content in instances or differences in content among instances; d. scoring complex XPaths based on content in instances or differences in content among instances; e. forming candidate parsers, with each parser comprising a single record XPath that identifies records and one or more field XPaths that identify fields; f. scoring candidate parsers, with each candidate parser score based the scores of field XPaths, the number of records identified in the sample document by the record XPath, and the structural similarity between records; g. ordering candidate parsers according to scores.