使用 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);
}
}
`
我正在尝试使用其中引用的 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);
}
}
`