Class EvaluateXPathMatcher

  • All Implemented Interfaces:
    org.hamcrest.Matcher<java.lang.Object>, org.hamcrest.SelfDescribing

    public class EvaluateXPathMatcher
    extends org.hamcrest.BaseMatcher<java.lang.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 Summary

      Constructors 
      Constructor Description
      EvaluateXPathMatcher​(java.lang.String xPath, org.hamcrest.Matcher<java.lang.String> valueMatcher)
      Creates a EvaluateXPathMatcher instance with the associated XPath expression and the value matcher corresponding to the XPath evaluation.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void describeMismatch​(java.lang.Object object, org.hamcrest.Description mismatchDescription)  
      void describeTo​(org.hamcrest.Description description)  
      static EvaluateXPathMatcher hasXPath​(java.lang.String xPath, org.hamcrest.Matcher<java.lang.String> valueMatcher)
      Creates a matcher that matches when the examined XML input has a value at the specified xPath that satisfies the specified valueMatcher.
      boolean matches​(java.lang.Object object)  
      EvaluateXPathMatcher withDocumentBuilderFactory​(javax.xml.parsers.DocumentBuilderFactory f)
      Sets the DocumentBuilderFactory to use when creating a Document from the XML input.
      EvaluateXPathMatcher withNamespaceContext​(java.util.Map<java.lang.String,​java.lang.String> prefix2Uri)
      Utility method used for creating a namespace context mapping to be used in XPath matching.
      EvaluateXPathMatcher withXPathFactory​(javax.xml.xpath.XPathFactory f)
      Sets the XPathFactory to use.
      • Methods inherited from class org.hamcrest.BaseMatcher

        _dont_implement_Matcher___instead_extend_BaseMatcher_, isNotNull, toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • EvaluateXPathMatcher

        public EvaluateXPathMatcher​(java.lang.String xPath,
                                    org.hamcrest.Matcher<java.lang.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 Detail

      • hasXPath

        public static EvaluateXPathMatcher hasXPath​(java.lang.String xPath,
                                                    org.hamcrest.Matcher<java.lang.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​(javax.xml.parsers.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​(javax.xml.xpath.XPathFactory f)
        Sets the XPathFactory to use.
        Parameters:
        f - the XPathFactory to use
        Returns:
        this
        Since:
        XMLUnit 2.6.1
      • matches

        public boolean matches​(java.lang.Object object)
      • describeTo

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

        public void describeMismatch​(java.lang.Object object,
                                     org.hamcrest.Description mismatchDescription)
        Specified by:
        describeMismatch in interface org.hamcrest.Matcher<java.lang.Object>
        Overrides:
        describeMismatch in class org.hamcrest.BaseMatcher<java.lang.Object>
      • withNamespaceContext

        public EvaluateXPathMatcher withNamespaceContext​(java.util.Map<java.lang.String,​java.lang.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