1
我想验证一个XML文件对许多XSD文件。此时我只能手动输入xsd模式。 (我的意思是我检查我的XML文件并查看XSD定义)。如何检测任何XML文件中的XSD架构文件?我们如何自动检测XML文件中的XSD模式文件?
我到目前为止所尝试的是: //以下方法检查xml文件是否针对多个xsd模式文件。
public static void XSDValidation() throws SAXException, IOException, ParserConfigurationException {
try {
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema sch = schemaFactory.newSchema(new Source[] { new StreamSource(new FileInputStream("role-1.2.xsd")),
new StreamSource(new FileInputStream("role-1.1.xsd")) });
Validator validator = sch.newValidator();
validator.validate(new StreamSource("role.xml"));
System.out.println("INFO: Validation is done successfully.");
} catch (Exception e) {
System.out.println("ERROR: Validation is failed.");
}
}
我使用DOM解析器和Java 8
提前感谢所有帮助。
编辑: @ kjhughes我并没有简单地问
什么是验证对一个XSD文件的XML文件的最佳方法是什么?
我的问题:我们如何检测XML文件中的XSD模式文件。例如,当我想验证包含b.xsd和c.xsd的a.xml时,我想要按照正确的顺序自动检测这些文件。我的意思是如果XML首先使用来自c.xsd的命名空间,那么它应该被检测到。在我的示例中,XSD模式文件及其顺序是通过检查XML内部来手动编写的。
如何使用自定义entityresolver来查找引用的模式? – ulab
@ulab我已阅读https://docs.oracle.com/javase/7/docs/api/org/xml/sax/EntityResolver.html,但实际上我无法理解我可以如何申请。你能解释一下吗? – limonik
带有这些XSD声明的示例XML可以提供帮助。你可以发布样本吗? –