我想验证一个在根元素中具有schemalocation的xml文件,而没有该文件的本地化。我想我可以使用它,但是问题是此xml包含位于xml文件中另一个元素上的另一个架构,并且我找不到一种定义架构的方法来验证单个文件。有人可以帮我吗?
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new URL(UrlToSchema));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(xmlFile));
这也是从xml文件获取变量UrlToSchema的一种方法吗?
答案 0 :(得分:0)
您必须定义一个StreamSource
数组以包含xml模式列表。
您可以参考javadoc。
假定有两个xml模式,即xsds,代码应如下所示
StreamSource[] xsdSources = new StreamSource[2];
FileInputStream fis1 = new FileInputStream("schema1.xsd");
sources[0] = new StreamSource(fis1);
FileInputStream fis2 = new FileInputStream("schema2.xsd");
sources[1] = new StreamSource(fis2);
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(xsdSources);
Validator validator = schema.newValidator();
validator.validate(new StreamSource(xmlFile));
如果要读取ulr,可以使用以下代码。
InputStream fis1 = new URL("http://www.somesite.com/schema1.xsd").openStream();
sources[0] = new StreamSource(fis1);