我正在尝试使用在其中引用的XSD列表来验证从RestAssured检索到的XML响应。
我试过
given().param(...).when().get(URL).then().assertThat().body(matchesXsd(xsd))
如果我有一个包含所有模式定义的XSD文件但是如何拥有多个XSD,这是有效的?这些XSD也在其自身内引用。此外,所有XSD都是项目的本地。
我尝试了Rest-Assured XSD References Other XSDs和Validate an XML File Against Multiple Schema Definitions以及其他一些内容,但它们与我的目标无关或者对我不起作用。
答案 0 :(得分:0)
我解决了它:
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);
}
}
`