Package org.xmlunit.matchers
Class EvaluateXPathMatcher
java.lang.Object
org.hamcrest.BaseMatcher<Object>
org.xmlunit.matchers.EvaluateXPathMatcher
- All Implemented Interfaces:
org.hamcrest.Matcher<Object>
,org.hamcrest.SelfDescribing
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
ConstructorDescriptionEvaluateXPathMatcher
(String xPath, org.hamcrest.Matcher<String> valueMatcher) Creates aEvaluateXPathMatcher
instance with the associated XPath expression and the value matcher corresponding to the XPath evaluation. -
Method Summary
Modifier and TypeMethodDescriptionvoid
describeMismatch
(Object object, org.hamcrest.Description mismatchDescription) void
describeTo
(org.hamcrest.Description description) static EvaluateXPathMatcher
Creates a matcher that matches when the examined XML input has a value at the specifiedxPath
that satisfies the specifiedvalueMatcher
.boolean
Sets theDocumentBuilderFactory
to use when creating aDocument
from the XML input.withNamespaceContext
(Map<String, String> prefix2Uri) Utility method used for creating a namespace context mapping to be used in XPath matching.Sets theXPathFactory
to use.Methods inherited from class org.hamcrest.BaseMatcher
_dont_implement_Matcher___instead_extend_BaseMatcher_, toString
-
Constructor Details
-
EvaluateXPathMatcher
Creates aEvaluateXPathMatcher
instance with the associated XPath expression and the value matcher corresponding to the XPath evaluation.- Parameters:
xPath
- xPath expressionvalueMatcher
- 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 specifiedxPath
that satisfies the specifiedvalueMatcher
.For example:
assertThat(xml, hasXPath("//fruits/fruit/@name", equalTo("apple"))
- Parameters:
xPath
- the target xpathvalueMatcher
- matcher for the value at the specified xpath- Returns:
- the xpath matcher
-
withDocumentBuilderFactory
Sets theDocumentBuilderFactory
to use when creating aDocument
from the XML input.- Parameters:
f
- the DocumentBuilderFactory to use- Returns:
- this
- Since:
- XMLUnit 2.6.0
-
withXPathFactory
Sets theXPathFactory
to use.- Parameters:
f
- the XPathFactory to use- Returns:
- this
- Since:
- XMLUnit 2.6.1
-
matches
-
describeTo
public void describeTo(org.hamcrest.Description description) -
describeMismatch
-
withNamespaceContext
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
-