Class EvaluateXPathMatcher

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

public class EvaluateXPathMatcher extends org.hamcrest.BaseMatcher<Object>
This Hamcrest Matcher verifies whether the evaluation of the provided XPath expression corresponds to the value matcher specified for the provided input XML object.

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

Simple Example

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

 assertThat(xml, hasXPath("//a/b/@attr", equalTo("abc")));
 assertThat(xml, hasXPath("count(//a/b/c)", equalTo("0")));
 

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(xml,
          hasXPath("//atom:feed/atom:entry/atom:id/text()", equalTo("id1"))
          .withNamespaceContext(prefix2Uri));
 
Since:
XMLUnit 2.1.0
  • Constructor Details

    • EvaluateXPathMatcher

      public EvaluateXPathMatcher(String xPath, org.hamcrest.Matcher<String> valueMatcher)
      Creates a EvaluateXPathMatcher instance with the associated XPath expression and the value matcher corresponding to the XPath evaluation.
      Parameters:
      xPath - xPath expression
      valueMatcher - matcher for the value at the specified xpath
  • Method Details

    • hasXPath

      public static EvaluateXPathMatcher hasXPath(String xPath, org.hamcrest.Matcher<String> valueMatcher)
      Creates a matcher that matches when the examined XML input has a value at the specified xPath that satisfies the specified valueMatcher.

      For example:

      assertThat(xml, hasXPath("//fruits/fruit/@name", equalTo("apple"))
      Parameters:
      xPath - the target xpath
      valueMatcher - matcher for the value at the specified xpath
      Returns:
      the xpath matcher
    • withDocumentBuilderFactory

      public EvaluateXPathMatcher 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 EvaluateXPathMatcher 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 object, org.hamcrest.Description mismatchDescription)
      Specified by:
      describeMismatch in interface org.hamcrest.Matcher<Object>
      Overrides:
      describeMismatch in class org.hamcrest.BaseMatcher<Object>
    • withNamespaceContext

      public EvaluateXPathMatcher 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