我知道如何使用以下方法在JUnit中执行此操作:
String xsdPathname = getClass.getResource("/META-INF/xsd/my.xsd").getFile();
Schema schema = sf.newSchema(new File(pathname));
Validator validator = schema.newValidator();
validator.validate(source);
但据我所知,当xsd打包在jar中时,这是不可用的。
是否有其他“架构”构建方法可以接受“InputStream”而不是“File”?
答案 0 :(得分:2)
您可以使用SchemaFactory#newSchema(Source),提供StreamSource。因此,您的代码看起来像
InputStream xsdInputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/META-INF/xsd/my.xsd");
Schema schema = sf.newSchema(new StreamSource(xsdInputStream));
Validator validator = schema.newValidator();
validator.validate(source);