Package org.xmlunit.diff
Class DOMDifferenceEngine
- java.lang.Object
-
- org.xmlunit.diff.AbstractDifferenceEngine
-
- org.xmlunit.diff.DOMDifferenceEngine
-
- All Implemented Interfaces:
DifferenceEngine
public final class DOMDifferenceEngine extends AbstractDifferenceEngine
Difference engine based on DOM.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
DOMDifferenceEngine.Attributes
private class
DOMDifferenceEngine.ControlAttributePresentComparer
private class
DOMDifferenceEngine.NormalAttributeComparer
private class
DOMDifferenceEngine.UnmatchedControlNodes
private class
DOMDifferenceEngine.UnmatchedTestNodes
-
Nested classes/interfaces inherited from class org.xmlunit.diff.AbstractDifferenceEngine
AbstractDifferenceEngine.ComparisonState, AbstractDifferenceEngine.DeferredComparison, AbstractDifferenceEngine.FinishedComparisonState, AbstractDifferenceEngine.OngoingComparisonState
-
-
Field Summary
Fields Modifier and Type Field Description private javax.xml.parsers.DocumentBuilderFactory
documentBuilderFactory
private static Mapper<org.w3c.dom.Node,javax.xml.namespace.QName>
QNAME_MAPPER
Maps Nodes to their QNames.
-
Constructor Summary
Constructors Constructor Description DOMDifferenceEngine()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
compare(javax.xml.transform.Source control, javax.xml.transform.Source test)
Compares two pieces of XML and invokes the registered listeners.private AbstractDifferenceEngine.DeferredComparison
compareAttributeExplicitness(org.w3c.dom.Attr control, XPathContext controlContext, org.w3c.dom.Attr test, XPathContext testContext)
Compares whether two attributes are specified explicitly.private AbstractDifferenceEngine.ComparisonState
compareAttributes(org.w3c.dom.Attr control, XPathContext controlContext, org.w3c.dom.Attr test, XPathContext testContext)
Compares properties of an attribute.private AbstractDifferenceEngine.ComparisonState
compareCharacterData(org.w3c.dom.CharacterData control, XPathContext controlContext, org.w3c.dom.CharacterData test, XPathContext testContext)
Compares textual content.private AbstractDifferenceEngine.DeferredComparison
compareChildren(XPathContext controlContext, java.lang.Iterable<org.w3c.dom.Node> allControlChildren, java.lang.Iterable<org.w3c.dom.Node> controlChildren, XPathContext testContext, java.lang.Iterable<org.w3c.dom.Node> allTestChildren, java.lang.Iterable<org.w3c.dom.Node> testChildren)
private AbstractDifferenceEngine.DeferredComparison
compareDeclarations(org.w3c.dom.Document control, XPathContext controlContext, org.w3c.dom.Document test, XPathContext testContext)
Compares properties of XML declaration.private AbstractDifferenceEngine.ComparisonState
compareDocTypes(org.w3c.dom.DocumentType control, XPathContext controlContext, org.w3c.dom.DocumentType test, XPathContext testContext)
Compares properties of the doctype declaration.private AbstractDifferenceEngine.ComparisonState
compareDocuments(org.w3c.dom.Document control, XPathContext controlContext, org.w3c.dom.Document test, XPathContext testContext)
Compares document node, doctype and XML declaration propertiesprivate AbstractDifferenceEngine.ComparisonState
compareElementAttributes(org.w3c.dom.Element control, XPathContext controlContext, org.w3c.dom.Element test, XPathContext testContext)
Compares element's attributes.private AbstractDifferenceEngine.ComparisonState
compareElements(org.w3c.dom.Element control, XPathContext controlContext, org.w3c.dom.Element test, XPathContext testContext)
Compares elements node properties, in particular the element's name and its attributes.private AbstractDifferenceEngine.ComparisonState
compareNodeLists(java.lang.Iterable<org.w3c.dom.Node> allControlChildren, java.lang.Iterable<org.w3c.dom.Node> controlSeq, XPathContext controlContext, java.lang.Iterable<org.w3c.dom.Node> allTestChildren, java.lang.Iterable<org.w3c.dom.Node> testSeq, XPathContext testContext)
Matches nodes of two node lists and invokes compareNode on each pair.(package private) AbstractDifferenceEngine.ComparisonState
compareNodes(org.w3c.dom.Node control, XPathContext controlContext, org.w3c.dom.Node test, XPathContext testContext)
Recursively compares two XML nodes.private AbstractDifferenceEngine.ComparisonState
compareProcessingInstructions(org.w3c.dom.ProcessingInstruction control, XPathContext controlContext, org.w3c.dom.ProcessingInstruction test, XPathContext testContext)
Compares properties of a processing instruction.private AbstractDifferenceEngine.ComparisonState
compareXsiType(org.w3c.dom.Attr controlAttr, XPathContext controlContext, org.w3c.dom.Attr testAttr, XPathContext testContext)
Compares xsi:type attribute valuesprivate <T extends org.w3c.dom.Node>
TfilterNode(T n)
private static org.w3c.dom.Attr
findMatchingAttr(java.util.List<org.w3c.dom.Attr> attrs, org.w3c.dom.Attr attrToMatch)
Find the attribute with the same namespace and local name as a given attribute in a list of attributes.private AbstractDifferenceEngine.ComparisonState
nodeTypeSpecificComparison(org.w3c.dom.Node control, XPathContext controlContext, org.w3c.dom.Node test, XPathContext testContext)
Dispatches to the node type specific comparison if one is defined for the given combination of nodes.void
setDocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory f)
Sets theDocumentBuilderFactory
to use when creating aDocument
from theSource
s to compare.private DOMDifferenceEngine.Attributes
splitAttributes(org.w3c.dom.NamedNodeMap map)
Separates XML namespace related attributes from "normal" attributes.xbprivate static javax.xml.namespace.QName
valueAsQName(org.w3c.dom.Attr attribute)
private XPathContext
xpathContextFor(org.w3c.dom.Node n)
-
Methods inherited from class org.xmlunit.diff.AbstractDifferenceEngine
addComparisonListener, addDifferenceListener, addMatchListener, compare, getAttributeFilter, getComparisonController, getDifferenceEvaluator, getNamespaceContext, getNodeFilter, getNodeMatcher, getParentXPath, getXPath, setAttributeFilter, setComparisonController, setDifferenceEvaluator, setNamespaceContext, setNodeFilter, setNodeMatcher
-
-
-
-
Field Detail
-
QNAME_MAPPER
private static final Mapper<org.w3c.dom.Node,javax.xml.namespace.QName> QNAME_MAPPER
Maps Nodes to their QNames.
-
documentBuilderFactory
private javax.xml.parsers.DocumentBuilderFactory documentBuilderFactory
-
-
Method Detail
-
setDocumentBuilderFactory
public void setDocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory f)
Sets theDocumentBuilderFactory
to use when creating aDocument
from theSource
s to compare.This is only used if the
Source
passed tocompare(javax.xml.transform.Source, javax.xml.transform.Source)
is not already aDOMSource
.- Since:
- XMLUnit 2.2.0
-
compare
public void compare(javax.xml.transform.Source control, javax.xml.transform.Source test)
Description copied from interface:DifferenceEngine
Compares two pieces of XML and invokes the registered listeners.
-
xpathContextFor
private XPathContext xpathContextFor(org.w3c.dom.Node n)
-
compareNodes
AbstractDifferenceEngine.ComparisonState compareNodes(org.w3c.dom.Node control, XPathContext controlContext, org.w3c.dom.Node test, XPathContext testContext)
Recursively compares two XML nodes.Performs comparisons common to all node types, then performs the node type specific comparisons and finally recurses into the node's child lists.
Stops as soon as any comparison returns ComparisonResult.CRITICAL.
package private to support tests.
-
nodeTypeSpecificComparison
private AbstractDifferenceEngine.ComparisonState nodeTypeSpecificComparison(org.w3c.dom.Node control, XPathContext controlContext, org.w3c.dom.Node test, XPathContext testContext)
Dispatches to the node type specific comparison if one is defined for the given combination of nodes.
-
compareChildren
private AbstractDifferenceEngine.DeferredComparison compareChildren(XPathContext controlContext, java.lang.Iterable<org.w3c.dom.Node> allControlChildren, java.lang.Iterable<org.w3c.dom.Node> controlChildren, XPathContext testContext, java.lang.Iterable<org.w3c.dom.Node> allTestChildren, java.lang.Iterable<org.w3c.dom.Node> testChildren)
-
compareCharacterData
private AbstractDifferenceEngine.ComparisonState compareCharacterData(org.w3c.dom.CharacterData control, XPathContext controlContext, org.w3c.dom.CharacterData test, XPathContext testContext)
Compares textual content.
-
compareDocuments
private AbstractDifferenceEngine.ComparisonState compareDocuments(org.w3c.dom.Document control, XPathContext controlContext, org.w3c.dom.Document test, XPathContext testContext)
Compares document node, doctype and XML declaration properties
-
filterNode
private <T extends org.w3c.dom.Node> T filterNode(T n)
-
compareDocTypes
private AbstractDifferenceEngine.ComparisonState compareDocTypes(org.w3c.dom.DocumentType control, XPathContext controlContext, org.w3c.dom.DocumentType test, XPathContext testContext)
Compares properties of the doctype declaration.
-
compareDeclarations
private AbstractDifferenceEngine.DeferredComparison compareDeclarations(org.w3c.dom.Document control, XPathContext controlContext, org.w3c.dom.Document test, XPathContext testContext)
Compares properties of XML declaration.
-
compareElements
private AbstractDifferenceEngine.ComparisonState compareElements(org.w3c.dom.Element control, XPathContext controlContext, org.w3c.dom.Element test, XPathContext testContext)
Compares elements node properties, in particular the element's name and its attributes.
-
compareElementAttributes
private AbstractDifferenceEngine.ComparisonState compareElementAttributes(org.w3c.dom.Element control, XPathContext controlContext, org.w3c.dom.Element test, XPathContext testContext)
Compares element's attributes.
-
compareProcessingInstructions
private AbstractDifferenceEngine.ComparisonState compareProcessingInstructions(org.w3c.dom.ProcessingInstruction control, XPathContext controlContext, org.w3c.dom.ProcessingInstruction test, XPathContext testContext)
Compares properties of a processing instruction.
-
compareNodeLists
private AbstractDifferenceEngine.ComparisonState compareNodeLists(java.lang.Iterable<org.w3c.dom.Node> allControlChildren, java.lang.Iterable<org.w3c.dom.Node> controlSeq, XPathContext controlContext, java.lang.Iterable<org.w3c.dom.Node> allTestChildren, java.lang.Iterable<org.w3c.dom.Node> testSeq, XPathContext testContext)
Matches nodes of two node lists and invokes compareNode on each pair.Also performs CHILD_LOOKUP comparisons for each node that couldn't be matched to one of the "other" list.
-
compareXsiType
private AbstractDifferenceEngine.ComparisonState compareXsiType(org.w3c.dom.Attr controlAttr, XPathContext controlContext, org.w3c.dom.Attr testAttr, XPathContext testContext)
Compares xsi:type attribute values
-
compareAttributes
private AbstractDifferenceEngine.ComparisonState compareAttributes(org.w3c.dom.Attr control, XPathContext controlContext, org.w3c.dom.Attr test, XPathContext testContext)
Compares properties of an attribute.
-
compareAttributeExplicitness
private AbstractDifferenceEngine.DeferredComparison compareAttributeExplicitness(org.w3c.dom.Attr control, XPathContext controlContext, org.w3c.dom.Attr test, XPathContext testContext)
Compares whether two attributes are specified explicitly.
-
splitAttributes
private DOMDifferenceEngine.Attributes splitAttributes(org.w3c.dom.NamedNodeMap map)
Separates XML namespace related attributes from "normal" attributes.xb
-
valueAsQName
private static javax.xml.namespace.QName valueAsQName(org.w3c.dom.Attr attribute)
-
findMatchingAttr
private static org.w3c.dom.Attr findMatchingAttr(java.util.List<org.w3c.dom.Attr> attrs, org.w3c.dom.Attr attrToMatch)
Find the attribute with the same namespace and local name as a given attribute in a list of attributes.
-
-