我正在尝试进行 xml 验证。我在运行时得到了一个模式列表(可能包装在一个罐子里)。根据我向 SchemaFactory 提供模式的顺序,验证通过或失败。
这是我正在做的事情:
private void validateXml(String xml, List<URI> schemas){
Source[] source = new StreamSource[schemas.size()];
int i=0;
for (URI f : schemas){
source[i++] = new StreamSource(f.openStream());
}
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NA_URI);
sf.setResourceResolver(new MyClassPathResourceResolver());
Schema schema = schemaFactory.newSchema(source);
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new ByteArrayInputStream(xml.getBytes()));
同样,如果传递的模式集不以 xml 的根元素所引用的模式开头,则此操作将失败。有解决办法还是我做错了什么?