Class HasXPathMatcher

java.lang.Object
org.hamcrest.BaseMatcher<Object>
org.xmlunit.matchers.HasXPathMatcher
All Implemented Interfaces:
org.hamcrest.Matcher<Object>, org.hamcrest.SelfDescribing

public class HasXPathMatcher extends org.hamcrest.BaseMatcher<Object>
This Hamcrest Matcher verifies whether the provided XPath expression corresponds to at least one element in the provided object.

All types which are supported by Input.from(Object) can be used as input for the object against the matcher is evaluated.

Simple Example

 final String xml = "<a><b attr=\"abc\"></b></a>";

 assertThat(xml, hasXPath("//a/b/@attr"));
 assertThat(xml, not(hasXPath("//a/b/c")));
 

Example with namespace mapping

    String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
          "<feed xmlns=\"http://www.w3.org/2005/Atom\">" +
          "   <title>title</title>" +
          "   <entry>" +
          "       <title>title1</title>" +
          "       <id>id1</id>" +
          "   </entry>" +
          "</feed>";

    HashMap<String, String> prefix2Uri = new HashMap<String, String>();
    prefix2Uri.put("atom", "http://www.w3.org/2005/Atom");
    assertThat(xmlRootElement,
          hasXPath("//atom:feed/atom:entry/atom:id").withNamespaceContext(prefix2Uri));
 
Since:
XMLUnit 2.1.0
  • Constructor Details

    • HasXPathMatcher

      public HasXPathMatcher(String xPath)
      Creates a HasXPathMatcher instance with the associated XPath expression.
      Parameters:
      xPath - xPath expression
  • Method Details

    • withDocumentBuilderFactory

      public HasXPathMatcher withDocumentBuilderFactory(DocumentBuilderFactory f)
      Sets the DocumentBuilderFactory to use when creating a Document from the XML input.
      Parameters:
      f - the DocumentBuilderFactory to use
      Returns:
      this
      Since:
      XMLUnit 2.6.0
    • withXPathFactory

      public HasXPathMatcher withXPathFactory(XPathFactory f)
      Sets the XPathFactory to use.
      Parameters:
      f - the XPathFactory to use
      Returns:
      this
      Since:
      XMLUnit 2.6.1
    • matches

      public boolean matches(Object object)
    • describeTo

      public void describeTo(org.hamcrest.Description description)
    • describeMismatch

      public void describeMismatch(Object item, org.hamcrest.Description mismatchDescription)
      Specified by:
      describeMismatch in interface org.hamcrest.Matcher<Object>
      Overrides:
      describeMismatch in class org.hamcrest.BaseMatcher<Object>
    • hasXPath

      public static HasXPathMatcher hasXPath(String xPath)
      Creates a matcher that matches when the examined XML input has at least one node corresponding to the specified xPath.

      For example:

      assertThat(xml, hasXPath("/root/cars[0]/audi"))
      Parameters:
      xPath - the target xpath
      Returns:
      the xpath matcher
    • withNamespaceContext

      public HasXPathMatcher withNamespaceContext(Map<String,String> prefix2Uri)
      Utility method used for creating a namespace context mapping to be used in XPath matching.
      Parameters:
      prefix2Uri - prefix2Uri maps from prefix to namespace URI. It is used to resolve XML namespace prefixes in the XPath expression
      Returns:
      this