使用 RestAssured 针对 xsds 列表验证 xml response/string

Validate xml response/string against list of xsds using RestAssured

我正在尝试使用其中引用的 XSD 列表来验证从 RestAssured 检索到的 XML 响应。

我试过了

 given().param(...).when().get(URL).then().assertThat().body(matchesXsd(xsd))

如果我有一个包含所有模式定义的 XSD 文件,这会起作用,但我如何才能拥有多个 XSD?这些 XSD 本身也被引用。此外,所有 XSD 都是项目本地的。

我尝试了 Rest-Assured XSD References Other XSDs and Validate an XML File Against Multiple Schema Definitions 以及其他一些尝试,但它们要么与我的目标无关,要么不适合我。

我通过以下方式解决了这个问题:

given().param(...).when().get(URL).then().assertThat().body(matchesXsd(getSystemResourceAsStream("parent.xsd")).using(new ClasspathResourceResolver()));

ClasspathResourceResolver 解析来自父 XSD 的所有引用。

`

public class ClasspathResourceResolver implements LSResourceResolver {

    @Override
    public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {
        InputStream resource = getSystemResourceAsStream(systemId);
        return new DOMInputImpl(publicId, systemId, baseURI, resource, null);
    }
}

`