Class HasXPathMatcher

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

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

      Fields 
      Modifier and Type Field Description
      private javax.xml.parsers.DocumentBuilderFactory dbf  
      private java.util.Map<java.lang.String,​java.lang.String> prefix2Uri  
      private java.lang.String xPath  
      private javax.xml.xpath.XPathFactory xpf  
    • Constructor Summary

      Constructors 
      Constructor Description
      HasXPathMatcher​(java.lang.String xPath)
      Creates a HasXPathMatcher instance with the associated XPath expression.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void describeMismatch​(java.lang.Object item, org.hamcrest.Description mismatchDescription)  
      void describeTo​(org.hamcrest.Description description)  
      static HasXPathMatcher hasXPath​(java.lang.String xPath)
      Creates a matcher that matches when the examined XML input has at least one node corresponding to the specified xPath.
      boolean matches​(java.lang.Object object)  
      HasXPathMatcher withDocumentBuilderFactory​(javax.xml.parsers.DocumentBuilderFactory f)
      Sets the DocumentBuilderFactory to use when creating a Document from the XML input.
      HasXPathMatcher 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.
      HasXPathMatcher 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
    • Field Detail

      • xPath

        private java.lang.String xPath
      • dbf

        private javax.xml.parsers.DocumentBuilderFactory dbf
      • xpf

        private javax.xml.xpath.XPathFactory xpf
      • prefix2Uri

        private java.util.Map<java.lang.String,​java.lang.String> prefix2Uri
    • Constructor Detail

      • HasXPathMatcher

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

      • withDocumentBuilderFactory

        public HasXPathMatcher withDocumentBuilderFactory​(javax.xml.parsers.DocumentBuilderFactory f)
        Sets the DocumentBuilderFactory to use when creating a Document from the XML input.
        Since:
        XMLUnit 2.6.0
      • withXPathFactory

        public HasXPathMatcher withXPathFactory​(javax.xml.xpath.XPathFactory f)
        Sets the XPathFactory to use.
        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 item,
                                     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>
      • hasXPath

        public static HasXPathMatcher hasXPath​(java.lang.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​(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