根据XSD验证XML

Sha*_*hai 39 java xml validation xsd

我需要使用给定的XSD文件验证XML文件.如果验证正常,我只需要方法返回true,否则返回false.

Grz*_*ski 67

返回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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 不应该只执行**只用于执行情况而****不用于控制流程吗?如果执行'测试',我不会认为它是execptional.它可以通过或失败.必须考虑两个选项.另请参阅http://stackoverflow.com/questions/15732/whats-the-best-way-to-validate-an-xml-file-against-an-xsd-file (7认同)

dev*_*fix 5

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();
Run Code Online (Sandbox Code Playgroud)