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
FieldsModifier and TypeFieldDescriptionprivate boolean
private final Document
private DifferenceEngineContract
private DifferenceListener
private ElementQualifier
private boolean
private boolean
private MatchTracker
private StringBuilder
private boolean
private final Document
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
ConstructorsModifierConstructorDescriptionConstruct 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 ElementQualifierDiff
(InputSource control, InputSource test) Construct a Diff that compares the XML read from two JAXP InputSources -
Method Summary
Modifier and TypeMethodDescriptionprivate void
appendDifference
(StringBuilder appendTo, Difference difference) Append a meaningful message to the buffer of messagesappendMessage
(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) private Document
Removes all comment nodes ifcomments are ignored
.private DifferenceEngineContract
Lazily initializes the difference engine if it hasn't been set via a constructor.private Document
Manipulates the given document according to the setting in the XMLUnit class.private Document
private Document
getWhitespaceManipulatedDocument
(Document originalDoc) Ifwhitespace is ignored
in differences then manipulate the content to strip the redundant whitespaceboolean
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.private static Document
toString()
Get the result of this Diff instance as a String
-
Field Details
-
controlDoc
-
testDoc
-
similar
private boolean similar -
identical
private boolean identical -
compared
private boolean compared -
haltComparison
private boolean haltComparison -
messages
-
differenceEngine
-
differenceListenerDelegate
-
elementQualifierDelegate
-
matchTrackerDelegate
-
-
Constructor Details
-
Diff
Construct a Diff that compares the XML in two Strings- Throws:
SAXException
IOException
-
Diff
Construct a Diff that compares the XML read from two Readers- Throws:
SAXException
IOException
-
Diff
Construct a Diff that compares the XML in two Documents -
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 -
Diff
Construct a Diff that compares the XML read from two JAXP InputSources- Throws:
SAXException
IOException
-
Diff
Construct a Diff that compares the XML in two JAXP DOMSources -
Diff
Construct a Diff that compares the XML in two Documents using a specific DifferenceEngine -
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 -
Diff
Construct a Diff from a prototypical instance. Used by extension subclasses- Parameters:
prototype
- a prototypical instance
-
-
Method Details
-
getWhitespaceManipulatedDocument
Ifwhitespace is ignored
in differences then manipulate the content to strip the redundant whitespace- Parameters:
originalDoc
- a document making up one half of this difference- Returns:
- the original document with redundant whitespace removed if differences ignore whitespace
-
getManipulatedDocument
Manipulates the given document according to the setting in the XMLUnit class.This may involve:
- Parameters:
orig
- a document making up one half of this difference- Returns:
- manipulated doc
-
getCommentlessDocument
Removes all comment nodes ifcomments are ignored
.- Parameters:
orig
- a document making up one half of this difference- Returns:
- manipulated doc
-
getNormalizedDocument
-
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. -
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. -
appendDifference
Append a meaningful message to the buffer of messages- Parameters:
appendTo
- the messages bufferdifference
-
-
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
-- Returns:
- a DifferenceListener.RETURN_... constant indicating how the difference was interpreted. Always RETURN_ACCEPT_DIFFERENCE if the call is not delegated.
-
evaluate
-
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
-test
-- See Also:
-
haltComparison
ComparisonController implementation.- Specified by:
haltComparison
in interfaceComparisonController
- Parameters:
afterDifference
-- 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
-- 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.
-
getDifferenceEngine
Lazily initializes the difference engine if it hasn't been set via a constructor. -
toDocument
-