【发布时间】:2012-08-07 18:55:21
【问题描述】:
我正在尝试进行 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 的根元素所引用的模式开头,则此操作将失败。有解决办法还是我做错了什么?
【问题讨论】:
-
你能把架构和 XML 贴在某个地方吗?
-
@davidfmatheson 不幸的是,这是不可能的,我可以说它是一组模式,根模式和第二个模式,允许用不同的标签替换第一个模式的主体.
标签: java xml xml-validation