验证XML与多个作为资源存储的XSD相匹配。Spring Boot
在Spring Boot应用程序中,当需要将XML验证为多个XSD(作为资源存储)时,可能会出现以下问题。
问题的原因是缺少解析XSD模式的依赖项。为了解决这个问题,需要添加以下依赖项到项目的构建文件中:
implementation("org.apache.ws.xmlschema:xmlschema-core:2.2.4")
解决方法是创建两个bean。一个用于存储XSD文件(如果有`schemaLocation="..."`,它会自动查找其他文件),另一个用于验证XML的有效性。
首先,创建一个用于存储XSD的bean:
fun schema(): XsdSchemaCollection {
return CommonsXsdSchemaCollection(
ClassPathResource("xsd/main.xsd")
).also { it.setInline(true) }
}
然后,创建一个用于验证XML的有效性的bean,它使用前面创建的XSD模式bean:
fun myValidator(schema: XsdSchemaCollection): XmlValidator {
return schema.createValidator()
}
接下来,可以使用创建的验证器来验证XML:
private val myValidator: XmlValidator
fun validate(data: String): Array
return myValidator.validate(StreamSource(data.byteInputStream()))
}
如果有任何验证异常,`Array
通过以上步骤,我们可以在Spring Boot应用程序中使用多个XSD文件来验证XML的有效性。