From: Jonathan F. <Jon...@or...> - 2010-12-14 03:26:38
|
Hi All, I'm working on a project that involves producing visual diffs of XML files. A major requirement is that elements should be able to be re-ordered but will not display as different unless they are logically different. I thought that XMLUnit's Diff class would accomplish this using the similar() function, and built my application accordingly. However, when I tested this, I found that reordered elements were instead being identified as non-recoverable TEXT_VALUE differences. For example, I have two blocks of XML: <application-variable> <name>database</name> <protected>false</protected> <value>SupportTracker</value> </application-variable> <application-variable> <name>conserver</name> <protected>false</protected> <value>jonathanf-vm</value> </application-variable> and <application-variable> <name>conserver</name> <protected>false</protected> <value>jonathanf-vm</value> </application-variable> <application-variable> <name>database</name> <protected>false</protected> <value>SupportTracker</value> </application-variable> These are logically equivalent (similar). However, when I compare these, I get: Expected text value 'conserver' but was 'database' - comparing conserver at /concerto[1]/application[1]/application-variable[1]/name[1]/text()[1] to database at /concerto[1]/application[1]/application-variable[1]/name[1]/text()[1] Expected text value 'jonathanf-vm' but was 'SupportTracker' - comparing jonathanf-vm at /concerto[1]/application[1]/application-variable[1]/value[1]/text()[1] to SupportTracker at /concerto[1]/application[1]/application-variable[1]/value[1]/text()[1] Expected text value 'database' but was 'conserver' - comparing database at /concerto[1]/application[1]/application-variable[2]/name[1]/text()[1] to conserver at /concerto[1]/application[1]/application-variable[2]/name[1]/text()[1] Expected text value 'SupportTracker' but was 'jonathanf-vm' - comparing SupportTracker at /concerto[1]/application[1]/application-variable[2]/value[1]/text()[1] to jonathanf-vm at /concerto[1]/application[1]/application-variable[2]/value[1]/text()[1] Is there a way of comparing XML files such that these logical similarities are preserved? Am I just not setting a configuration option? Any advice would be much appreciated. Yours Sincerely, Jonathan Foulkes |