[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: XML Diff

  • From: "Fraser Goffin" <goffinf@g...>
  • To: "XML DEV" <xml-dev@l...>
  • Date: Sat, 4 Aug 2007 15:49:52 +0100

Re:  XML Diff
Thanks Philippe (and indeed everyone else who has contributed some really useful suggestions).
Its perhaps worth me saying that I need to analyse the documents as part of a larger [running] process, so there won't be any human intervention until the comparison is completed and the results are sent as part of a message structure to a calling ESB service user. Can XUnit operate in this mode ?
The results I'm looking for are the additions, deletions and content changes that have been applied to both instances.

On 02/08/07, Philippe Poulard <Philippe.Poulard@s...> wrote:
Fraser Goffin a écrit :
> Has anyone come across a good Java library for comparing XML instances ?


you should consider XUnit :

XUnit does the same than JUnit, but if you have to compare 2 XML
documents, it might help ; usually you do you own stuff that produce
some datas, and as you have prepared the expected datas, you just have
to assert that the 2 datas are equals ; this is the same in XUnit, and
the 2 datas can be 2 nodes

for example :
<xunit:test-case name="myTest" label="Testing purchase order">
    <!--run your own stuff-->
    <acme:transform-purchase-order output=" result.xml" id="1234"/>

    <!--retrieve the result and the output expected-->
    <xcl:parse name="po" source="result.xml"/>
    <xcl:parse name="oe" source=" output-expected.xml"/>

    <!--check if they are equals-->
    <xunit:assert-node-equals result="{ $po }" expected="{ $oe }"

the tool works on the DOM, and it will report each difference found (for
example when an attribute is missing, or when an attribute is not
expected, or when the attribute values don't match) ; at a given level,
if 2 elements don't match, the tool won't look inside their content

exemple of report :
(if you scroll down a little, you'll find an HTML-formatted output)

it is simple, but efficient ; the output report contains the canonical
path of each node in fault (the canonical path is the XPath expression
that starts from the root and descend child from child by naming it and
setting its position regarding its parent : e.g. /root[1]/elem[5]/@attr)
namespace URIs are supplied if you have any, and they don't clash even
if some have been remapped in the documents

enjoy !


             (. .)
|      Philippe Poulard       |
       Have the RefleX !

  • Follow-Ups:
    • Re: XML Diff
      • From: Philippe Poulard <Philippe.Poulard@s...>
  • References:
    • Re: XML Diff
      • From: Philippe Poulard <Philippe.Poulard@s...>

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.

Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.