Class XpathNodeTracker
- All Implemented Interfaces:
XMLConstants
The tracker has the concept of a level which corresponds to the
depth of the tree it has visited. The indent
method creates a new level, making the tracker walk prepare to walk
down the tree, the outdent
method moves one level
up and any information about the previous level is discarded.
At each level there may be a current Node - the last one for
which visitedNode
or visited
has been called - and maybe a current attribute at this node - the
last one for which visitedAttribute
or
visited
has been called. Attributes are assumed
to be at the same level as the nodes they belong to.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final class
Holds node tracking details - one instance is used for each level of indentation in a DOM Provides reference between a String-ified Node value and the xpath index of that value -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate XPathContext
private final LinkedList<XpathNodeTracker.TrackingEntry>
Fields inherited from interface org.custommonkey.xmlunit.XMLConstants
CLOSE_NODE, END_CDATA, END_COMMENT, END_PROCESSING_INSTRUCTION, NULL_NS_URI, OPEN_END_NODE, OPEN_START_NODE, START_CDATA, START_COMMENT, START_DOCTYPE, START_PROCESSING_INSTRUCTION, W3C_XML_SCHEMA_INSTANCE_NO_NAMESPACE_SCHEMA_LOCATION_ATTR, W3C_XML_SCHEMA_INSTANCE_NS_URI, W3C_XML_SCHEMA_INSTANCE_SCHEMA_LOCATION_ATTR, W3C_XML_SCHEMA_NS_URI, XML_DECLARATION, XMLNS_PREFIX, XPATH_ATTRIBUTE_IDENTIFIER, XPATH_CHARACTER_NODE_IDENTIFIER, XPATH_COMMENT_IDENTIFIER, XPATH_NODE_INDEX_END, XPATH_NODE_INDEX_START, XPATH_PROCESSING_INSTRUCTION_IDENTIFIER, XPATH_SEPARATOR
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Call after processing attributes of an element and turning to compare the child nodes.private static String
getNodeName
(Node n) extracts the local name of a node.void
indent()
Call before examining child nodes one level of indentation into DOMprivate void
newLevel()
void
outdent()
Call after examining child nodes, ie before returning back one level of indentation from DOM.void
preloadChildList
(List nodeList) Preload the items in a List by visiting each in turn Required for pieces of test XML whose node children can be visited out of sequence by a DifferenceEngine comparisonprivate void
preloadChildren
(Iterable<Node> nodeList) Preload the nodes by visiting each in turn.void
preloadNodeList
(NodeList nodeList) Preload the items in a NodeList by visiting each in turn Required for pieces of test XML whose node children can be visited out of sequence by a DifferenceEngine comparisonvoid
reset()
Clear state data.void
Call when visiting a node whose xpath location needs trackingprotected void
visitedAttribute
(String visited) Invoked byvisited
when visiting an attribute node.protected void
visitedNode
(Node visited, String value) Invoked byvisited
when visited is an element, text, CDATA section, comment or processing instruction.
-
Field Details
-
ctx
-
levels
-
-
Constructor Details
-
XpathNodeTracker
public XpathNodeTracker()Simple constructor
-
-
Method Details
-
reset
public void reset()Clear state data. Call if required to reuse an existing instance. -
indent
public void indent() -
newLevel
private void newLevel() -
clearTrackedAttribute
public void clearTrackedAttribute()Call after processing attributes of an element and turning to compare the child nodes. -
outdent
public void outdent() -
visited
Call when visiting a node whose xpath location needs trackingDelegates to
visitedAttribute
for attribute nodes,visitedNode
for elements, texts, CDATA sections, comments or processing instructions and ignores any other type of node.- Parameters:
node
- the Node being visited - must not be null.
-
visitedNode
Invoked byvisited
when visited is an element, text, CDATA section, comment or processing instruction.- Parameters:
visited
- the visited node - Unit tests call this with null values, so it is not safe to assume it will never be null. It will never be null when thevisited
method delegates here.value
- the local name of the element or an XPath identifier matching the type of node.
-
visitedAttribute
Invoked byvisited
when visiting an attribute node.- Parameters:
visited
- the local name of the attribute.
-
preloadNodeList
Preload the items in a NodeList by visiting each in turn Required for pieces of test XML whose node children can be visited out of sequence by a DifferenceEngine comparisonMakes the nodes of this list known as nodes that are visitable at the current level and makes the last child node the current node as a side effect.
- Parameters:
nodeList
- the items to preload
-
preloadChildList
Preload the items in a List by visiting each in turn Required for pieces of test XML whose node children can be visited out of sequence by a DifferenceEngine comparisonMakes the nodes of this list known as nodes that are visitable at the current level and makes the last child node the current node as a side effect.
- Parameters:
nodeList
- the items to preload
-
toXpathString
- Returns:
- the last visited node as an xpath-location String
-
getNodeName
extracts the local name of a node. -
preloadChildren
Preload the nodes by visiting each in turn. Required for pieces of test XML whose node children can be visited out of sequence by a DifferenceEngine comparisonMakes the nodes of this list known as nodes that are visitable at the current level and makes the last child node the current node as a side effect.
- Parameters:
nodeList
- the items to preload
-