使用RestAssured对xsds列表验证xml响应/字符串

时间:2017-07-27 04:34:57

标签: java xml validation xsd rest-assured

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

我试过

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

如果我有一个包含所有模式定义的XSD文件但是如何拥有多个XSD,这是有效的?这些XSD也在其自身内引用。此外,所有XSD都是项目的本地。

我尝试了Rest-Assured XSD References Other XSDsValidate an XML File Against Multiple Schema Definitions以及其他一些内容,但它们与我的目标无关或者对我不起作用。

1 个答案:

答案 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);
    }
}

`