如何使用标准javax.xml.validation.Validator在运行时(而不是JUnit)检查xml文件是否对xsd有效

如何使用标准javax.xml.validation.Validator在运行时(而不是JUnit)检查xml文件是否对xsd有效,java,xml,xsd,Java,Xml,Xsd,我知道如何在JUnit中使用: String xsdPathname = getClass.getResource("/META-INF/xsd/my.xsd").getFile(); Schema schema = sf.newSchema(new File(pathname)); Validator validator = schema.newValidator(); validator.validate(source); 但据我所知,当xsd打包在jar中时,这是不可用的 是否有其他“模

我知道如何在JUnit中使用:

String xsdPathname = getClass.getResource("/META-INF/xsd/my.xsd").getFile();
Schema schema = sf.newSchema(new File(pathname));
Validator validator = schema.newValidator();
validator.validate(source);
但据我所知,当xsd打包在jar中时,这是不可用的

是否有其他“模式”构建方法可以接受“InputStream”而不是“文件”?

您可以使用,提供一个。因此,您的代码如下所示

    InputStream xsdInputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/META-INF/xsd/my.xsd");
    Schema schema = sf.newSchema(new StreamSource(xsdInputStream));
    Validator validator = schema.newValidator();
    validator.validate(source);
您可以使用,提供一个。因此,您的代码如下所示

    InputStream xsdInputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/META-INF/xsd/my.xsd");
    Schema schema = sf.newSchema(new StreamSource(xsdInputStream));
    Validator validator = schema.newValidator();
    validator.validate(source);