Patent ID: 7437664

Claim:
In a computer system, a method, comprising: accessing a first file of hierarchically structured data; generating, from the first file, a first tree structure, the first tree structure having at least one first group of data that may be referenced as a group, the at least one first group being less than the whole first tree; accessing a second file of hierarchically structured data; generating, from the second file, a second tree structure, the second tree structure having at least second one group of data that may be referenced as a group, the at least one second group being less than the whole second tree; recursively iterating over and comparing nodes in the first tree structure with nodes in the second tree structure to develop a third tree structure, the third tree structure being a sparse link tree based on a comparison of the first and second tree structures, the sparse link tree comprising link objects relating nodes and groups of the first tree structure to nodes and groups of the second tree structure which are equal as between the first tree structure and the second tree structure, and excluding link objects relating nodes and groups of the first tree structure to nodes and groups of the second tree structure which are not equal as between the first tree structure and the second tree structure, the sparse link tree having gaps therein for unlinked nodes and groups which are not equal as between the first tree structure and the second tree structure; determining whether any links of the sparse link tree cross and, when links cross, removing at least one link object relating nodes or groups of the first tree structure to nodes and groups of the second tree structure so as to eliminating crossing of links in the sparse tree; converting the sparse link tree into a fourth tree structure, the fourth tree structure being a complete link tree formed by filling the gaps of unlinked nodes within the sparse link tree, the complete link tree relating the first tree structure to the second tree structure; linking the at least one group in the first tree to the at least one group in the second tree; and processing the complete link tree to output a set of at least one difference between the first file and the second file such that at least one difference is identified between the at least one first group and the at least one second group.