|
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
|