Package org.custommonkey.xmlunit
Class Diff
java.lang.Object
org.custommonkey.xmlunit.Diff
- All Implemented Interfaces:
ComparisonController
,DifferenceListener
- Direct Known Subclasses:
DetailedDiff
Compares and describes any difference between XML documents.
Two documents are either:
- identical: the content and sequence of the nodes in the documents are exactly the same
- similar: the content of the nodes in the documents are the same, but minor differences exist e.g. sequencing of sibling elements, values of namespace prefixes, use of implied attribute values
- different: the contents of the documents are fundamentally different
appendMessage
or toString
methods. NB: When comparing documents, the
comparison is halted as soon as the status (identical / similar / different)
is known with certainty. For a list of all differences between the documents
an instance of the DetailedDiff class
can be used
instead.-
Field Summary
Fields inherited from interface org.custommonkey.xmlunit.DifferenceListener
RETURN_ACCEPT_DIFFERENCE, RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL, RETURN_IGNORE_DIFFERENCE_NODES_SIMILAR, RETURN_UPGRADE_DIFFERENCE_NODES_DIFFERENT
-
Constructor Summary
ModifierConstructorDescriptionConstruct a Diff that compares the XML read from two ReadersConstruct a Diff that compares the XML in two StringsConstruct a Diff that compares the XML in a control Document against the result of a transformationConstruct a Diff that compares the XML in two JAXP DOMSourcesprotected
Construct a Diff from a prototypical instance.Construct a Diff that compares the XML in two DocumentsDiff
(Document controlDoc, Document testDoc, DifferenceEngineContract comparator) Construct a Diff that compares the XML in two Documents using a specific DifferenceEngineDiff
(Document controlDoc, Document testDoc, DifferenceEngineContract comparator, ElementQualifier elementQualifier) Construct a Diff that compares the XML in two Documents using a specific DifferenceEngine and ElementQualifier DifferenceEngineDiff
(InputSource control, InputSource test) Construct a Diff that compares the XML read from two JAXP InputSources -
Method Summary
Modifier and TypeMethodDescriptionappendMessage
(StringBuffer toAppendTo) Append the message from the result of this Diff instance to a specified StringBufferprotected final void
compare()
Top of the recursive comparison execution treeint
differenceFound
(Difference difference) DifferenceListener implementation.int
evaluate
(Difference difference) Evaluate the difference.boolean
haltComparison
(Difference afterDifference) ComparisonController implementation.boolean
Return the result of a comparison.void
overrideDifferenceListener
(DifferenceListener delegate) Override theDifferenceListener
used to determine how to handle differences that are found.void
overrideElementQualifier
(ElementQualifier delegate) Override theElementQualifier
used to determine which control and test nodes are comparable for this difference comparison.void
overrideMatchTracker
(MatchTracker delegate) Override theMatchTracker
used to track successfully matched nodes.boolean
similar()
Return the result of a comparison.void
skippedComparison
(Node control, Node test) DifferenceListener implementation.toString()
Get the result of this Diff instance as a String
-
Constructor Details
-
Diff
Construct a Diff that compares the XML in two Strings- Parameters:
control
- the control XMLtest
- the test XML- Throws:
SAXException
- if the parser feels like itIOException
- on i/o errors
-
Diff
Construct a Diff that compares the XML read from two Readers- Parameters:
control
- the control XMLtest
- the test XML- Throws:
SAXException
- if the parser feels like itIOException
- on i/o errors
-
Diff
Construct a Diff that compares the XML in two Documents- Parameters:
controlDoc
- the control XMLtestDoc
- the test XML
-
Diff
public Diff(String control, Transform testTransform) throws IOException, TransformerException, SAXException Construct a Diff that compares the XML in a control Document against the result of a transformation- Parameters:
control
- the control XMLtestTransform
- the test XML- Throws:
SAXException
- if the parser feels like itTransformerException
- if the transformer feels like itIOException
- on i/o errors
-
Diff
Construct a Diff that compares the XML read from two JAXP InputSources- Parameters:
control
- the control XMLtest
- the test XML- Throws:
SAXException
- if the parser feels like itIOException
- on i/o errors
-
Diff
Construct a Diff that compares the XML in two JAXP DOMSources- Parameters:
control
- the control XMLtest
- the test XML
-
Diff
Construct a Diff that compares the XML in two Documents using a specific DifferenceEngine- Parameters:
controlDoc
- the control XMLtestDoc
- the test XMLcomparator
- the difference engine
-
Diff
public Diff(Document controlDoc, Document testDoc, DifferenceEngineContract comparator, ElementQualifier elementQualifier) Construct a Diff that compares the XML in two Documents using a specific DifferenceEngine and ElementQualifier DifferenceEngine- Parameters:
controlDoc
- the control XMLtestDoc
- the test XMLcomparator
- the difference engineelementQualifier
- the element qualifier
-
Diff
Construct a Diff from a prototypical instance. Used by extension subclasses- Parameters:
prototype
- a prototypical instance
-
-
Method Details
-
compare
protected final void compare()Top of the recursive comparison execution tree -
similar
public boolean similar()Return the result of a comparison. Two documents are considered to be "similar" if they contain the same elements and attributes regardless of order.- Returns:
- whether the two pieces of XML are similar
-
identical
public boolean identical()Return the result of a comparison. Two documents are considered to be "identical" if they contain the same elements and attributes in the same order.- Returns:
- whether the two pieces of XML are identical
-
differenceFound
DifferenceListener implementation. If theoverrideDifferenceListener
method has been called then the interpretation of the difference will be delegated.- Specified by:
differenceFound
in interfaceDifferenceListener
- Parameters:
difference
- a Difference instance as defined inDifferenceConstants
describing the cause of the difference and containing the detail of the nodes that differ- Returns:
- a DifferenceListener.RETURN_... constant indicating how the difference was interpreted. Always RETURN_ACCEPT_DIFFERENCE if the call is not delegated.
-
evaluate
Evaluate the difference.- Parameters:
difference
- the difference- Returns:
- a DifferenceListener.RETURN_... constant indicating how the difference was interpreted.
-
skippedComparison
DifferenceListener implementation. If theoverrideDifferenceListener
method has been called then the call will be delegated otherwise a message is printed toSystem.err
.- Specified by:
skippedComparison
in interfaceDifferenceListener
- Parameters:
control
- the control node being comparedtest
- the test node being compared- See Also:
-
haltComparison
ComparisonController implementation.- Specified by:
haltComparison
in interfaceComparisonController
- Parameters:
afterDifference
- the last Difference passed todifferenceFound
- Returns:
- true if the difference is not recoverable and the comparison should be halted, or false if the difference is recoverable and the comparison can continue
- See Also:
-
appendMessage
Append the message from the result of this Diff instance to a specified StringBuffer- Parameters:
toAppendTo
- buffer to append messages to- Returns:
- specified StringBuffer with message appended
-
toString
Get the result of this Diff instance as a StringNote: This method will perform the comparison and cache the result if it hasn't been performed already. Any configuration changes made after calling this method will be ignored.
-
overrideDifferenceListener
Override theDifferenceListener
used to determine how to handle differences that are found.- Parameters:
delegate
- the DifferenceListener instance to delegate handling to.
-
overrideElementQualifier
Override theElementQualifier
used to determine which control and test nodes are comparable for this difference comparison.- Parameters:
delegate
- the ElementQualifier instance to delegate to.
-
overrideMatchTracker
Override theMatchTracker
used to track successfully matched nodes.- Parameters:
delegate
- the MatchTracker instance to delegate handling to.
-