Steps to Validate XML using XSD in Rest Assured
- Use a GET API that returns XML.
- Download or write a corresponding
.xsd
file to validate the structure. - Use
RestAssured
andXmlValidator
fromio.restassured.module.jsv
package. - Assert that the XML response conforms to the schema.
Maven Dependency:
<dependencies> <!-- Rest Assured --> <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>5.4.0</version> </dependency> <!-- XML Path --> <dependency> <groupId>io.rest-assured</groupId> <artifactId>xml-path</artifactId> <version>5.4.0</version> </dependency> <!-- XML Schema Validator --> <dependency> <groupId>io.rest-assured</groupId> <artifactId>json-schema-validator</artifactId> <version>5.4.0</version> </dependency> </dependencies>
Sample XML XSD File (
example.xsd
)<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
API URL that returns XML
Example: https://www.w3schools.com/xml/note.xml
(It returns XML like below)
<note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
Java Code (Using Rest Assured)
import io.restassured.RestAssured; import io.restassured.response.Response; import java.io.File; import static io.restassured.module.jsv.XmlSchemaValidator.matchesXsd; import static org.hamcrest.MatcherAssert.assertThat; public class XMLSchemaValidationTest { public static void main(String[] args) { // Set Base URI RestAssured.baseURI = "https://www.w3schools.com"; // Make GET request Response response = RestAssured .given() .when() .get("/xml/note.xml") .then() .extract().response(); // Print response (optional) System.out.println("Response XML:\n" + response.asString()); // Validate response XML against XSD File schema = new File("src/test/resources/example.xsd"); // adjust path assertThat(response.asString(), matchesXsd(schema)); System.out.println("XML Schema Validation Passed!"); } }
Output
Response XML: <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> XML Schema Validation Passed!
No comments:
Post a Comment