org.hamcrest.xml
Class HasXPath

java.lang.Object
  extended by org.hamcrest.BaseMatcher<T>
      extended by org.hamcrest.TypeSafeDiagnosingMatcher<org.w3c.dom.Node>
          extended by org.hamcrest.xml.HasXPath
All Implemented Interfaces:
org.hamcrest.Matcher<org.w3c.dom.Node>, org.hamcrest.SelfDescribing

public class HasXPath
extends org.hamcrest.TypeSafeDiagnosingMatcher<org.w3c.dom.Node>

Applies a Matcher to a given XML Node in an existing XML Node tree, specified by an XPath expression.

Author:
Joe Walnes, Steve Freeman

Field Summary
static javax.xml.namespace.NamespaceContext NO_NAMESPACE_CONTEXT
           
 
Constructor Summary
HasXPath(java.lang.String xPathExpression, org.hamcrest.Matcher<java.lang.String> valueMatcher)
           
HasXPath(java.lang.String xPathExpression, javax.xml.namespace.NamespaceContext namespaceContext, org.hamcrest.Matcher<java.lang.String> valueMatcher)
           
 
Method Summary
 void describeTo(org.hamcrest.Description description)
           
static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath)
          Creates a matcher of Nodes that matches when the examined node contains a node at the specified xPath, with any content.
static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, org.hamcrest.Matcher<java.lang.String> valueMatcher)
          Creates a matcher of Nodes that matches when the examined node has a value at the specified xPath that satisfies the specified valueMatcher.
static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, javax.xml.namespace.NamespaceContext namespaceContext)
          Creates a matcher of Nodes that matches when the examined node contains a node at the specified xPath within the specified namespace context, with any content.
static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath, javax.xml.namespace.NamespaceContext namespaceContext, org.hamcrest.Matcher<java.lang.String> valueMatcher)
          Creates a matcher of Nodes that matches when the examined node has a value at the specified xPath, within the specified namespaceContext, that satisfies the specified valueMatcher.
 boolean matchesSafely(org.w3c.dom.Node item, org.hamcrest.Description mismatch)
           
 
Methods inherited from class org.hamcrest.TypeSafeDiagnosingMatcher
describeMismatch, matches
 
Methods inherited from class org.hamcrest.BaseMatcher
_dont_implement_Matcher___instead_extend_BaseMatcher_, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NO_NAMESPACE_CONTEXT

public static final javax.xml.namespace.NamespaceContext NO_NAMESPACE_CONTEXT
Constructor Detail

HasXPath

public HasXPath(java.lang.String xPathExpression,
                org.hamcrest.Matcher<java.lang.String> valueMatcher)
Parameters:
xPathExpression - XPath expression.
valueMatcher - Matcher to use at given XPath. May be null to specify that the XPath must exist but the value is irrelevant.

HasXPath

public HasXPath(java.lang.String xPathExpression,
                javax.xml.namespace.NamespaceContext namespaceContext,
                org.hamcrest.Matcher<java.lang.String> valueMatcher)
Parameters:
xPathExpression - XPath expression.
namespaceContext - Resolves XML namespace prefixes in the XPath expression
valueMatcher - Matcher to use at given XPath. May be null to specify that the XPath must exist but the value is irrelevant.
Method Detail

matchesSafely

public boolean matchesSafely(org.w3c.dom.Node item,
                             org.hamcrest.Description mismatch)
Specified by:
matchesSafely in class org.hamcrest.TypeSafeDiagnosingMatcher<org.w3c.dom.Node>

describeTo

public void describeTo(org.hamcrest.Description description)

hasXPath

public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath,
                                                              org.hamcrest.Matcher<java.lang.String> valueMatcher)
Creates a matcher of Nodes that matches when the examined node has a value at the specified xPath that satisfies the specified valueMatcher.

For example:

assertThat(xml, hasXPath("/root/something[2]/cheese", equalTo("Cheddar")))

Parameters:
xPath - the target xpath
valueMatcher - matcher for the value at the specified xpath

hasXPath

public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath,
                                                              javax.xml.namespace.NamespaceContext namespaceContext,
                                                              org.hamcrest.Matcher<java.lang.String> valueMatcher)
Creates a matcher of Nodes that matches when the examined node has a value at the specified xPath, within the specified namespaceContext, that satisfies the specified valueMatcher.

For example:

assertThat(xml, hasXPath("/root/something[2]/cheese", myNs, equalTo("Cheddar")))

Parameters:
xPath - the target xpath
namespaceContext - the namespace for matching nodes
valueMatcher - matcher for the value at the specified xpath

hasXPath

public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath)
Creates a matcher of Nodes that matches when the examined node contains a node at the specified xPath, with any content.

For example:

assertThat(xml, hasXPath("/root/something[2]/cheese"))

Parameters:
xPath - the target xpath

hasXPath

public static org.hamcrest.Matcher<org.w3c.dom.Node> hasXPath(java.lang.String xPath,
                                                              javax.xml.namespace.NamespaceContext namespaceContext)
Creates a matcher of Nodes that matches when the examined node contains a node at the specified xPath within the specified namespace context, with any content.

For example:

assertThat(xml, hasXPath("/root/something[2]/cheese", myNs))

Parameters:
xPath - the target xpath
namespaceContext - the namespace for matching nodes