有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用restasured根据XSD列表验证xml响应/字符串

我试图验证从重启中检索到的XML响应,该响应包含在中引用的XSD列表

我试过了

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

如果我有一个包含所有模式定义的XSDs文件,那么这是可行的,但是我怎么能有多个XSD呢?这些XSD本身也会被引用。此外,所有XSD都是项目的本地XSD

我尝试了{a1}和{a2}以及其他一些,但它们要么与我的目标无关,要么对我无效


共 (1) 个答案

  1. # 1 楼答案

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

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

    `