在java中验证xml w.r.t XSD

时间:2013-03-31 16:04:19

标签: java xml xsd

我正在尝试验证以xsd格式生成w.r.t模式的xml文件。 怀疑是我是否需要在我的系统上传递模式的url或模式的位置? 同样,我们是否需要传递xml文件的内容或其位置?

以下是我正在使用的代码段 -

public void validateDTFAgainstXSD()
{
    String inputxml = "C:/Users/file.xml";
    String schemaLocation = "https://github.abcd/schema.xsd";
    try
    {
        SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        File schemaFile = new File(schemaLocation);
        Schema schema = factory.newSchema(schemaFile);
        javax.xml.validation.Validator validator = schema.newValidator();

        Source source = new StreamSource(new StringReader(inputxml));
        validator.validate(source);
        System.out.println("File validated");
    }
    catch(Exception ex)
    {
        System.out.println("File not validated");
    }       
}

1 个答案:

答案 0 :(得分:1)

有一些newSchema()重载,它们接受File对象或Source对象。你正在传递一个文件,这很好。

Validator.validate()方法需要Source。如果您有文件名,则可以使用新的StreamSource(新文件(文件名))构建源。你这样做的方式是错误的:它假定你在StringReader中包装的字符串包含要验证的XML,而不是包含XML的文件的名称。