针对 XSD 验证 XML
2022-09-01 01:24:01
我需要使用给定的 XSD 文件验证 XML 文件。我只需要该方法在验证顺利或错误的情况下返回true。
我需要使用给定的 XSD 文件验证 XML 文件。我只需要该方法在验证顺利或错误的情况下返回true。
简单地返回 true 或 false(也不需要任何外部库):
static boolean validateAgainstXSD(InputStream xml, InputStream xsd)
{
try
{
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(xsd));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(xml));
return true;
}
catch(Exception ex)
{
return false;
}
}
XMLUnit有一些很好的类来做到这一点,在他们的README文件中有一个例子:
Validator v = Validator.forLanguage(Languages.W3C_XML_SCHEMA_NS_URI);
v.setSchemaSources(Input.fromFile("local.xsd").build());
ValidationResult result = v.validateInstance(new StreamSource(new File("local.xml")));
return result.isValid();