Validación de esquema
Esto proporciona una configuración opcional para validar un archivo XML entrante contra un objeto Schema generado a partir de los archivos XSD relevantes. En caso de que falle la validación de esquema, el archivo no se desagregará.
La validación previa al debulking solo es posible para archivos XML.
La validación puede habilitarse para cada Debulking Configuration proporcionando la ruta de configuración validate-before-debulk.schema-bean-name dentro de la configuración. El valor proporcionado debe coincidir con el nombre del bean de Spring que provee el objeto javax.xml.validation.Schema relevante contra el cual validar. En caso de que no se proporcione un nombre de bean, o el bean relevante no esté configurado/disponible, el Debulker no podrá arrancar.
Personalizar la validación de esquema
El proceso de validación de esquema puede personalizarse de dos maneras:
Manejador de errores personalizado
La implementación XSDValidator admite inyectar un ErrorHandler personalizado. Si no se proporciona ninguno, el validador no usará explícitamente ningún manejador de errores y se basará en su comportamiento por defecto (que normalmente lanza excepciones de validación cuando se producen violaciones de esquema).
@Bean
ErrorHandler customErrorHandler() {
// Return a custom implementation of ErrorHandler
return new CustomErrorHandler();
}
Un manejador de errores personalizado puede usarse para:
-
Controlar cómo se reportan los errores de validación
-
Registrar mensajes más significativos
-
Suprimir o escalar tipos específicos de problemas de validación
Si el manejador de errores personalizado absorbe excepciones (por ejemplo extendiendo DefaultHandler sin sobrescribir error() o fatalError()), las fallas de validación de esquema podrían ignorarse silenciosamente.
|
Sobrescribir el bean XSDValidator
Para una personalización más extensa, puede sobrescribirse todo el bean XSDValidator definiendo un bean personalizado en la configuración de la aplicación:
@Bean
XSDValidator customXsdValidator(DebulkingContext debulkingContext,
ErrorHandler errorHandler) {
// Return a custom implementation or a customised instance of XSDValidator
return new CustomXSDValidator(debulkingContext, errorHandler);
}
Este enfoque permite un control completo sobre el proceso de validación, incluyendo cómo se gestionan y reportan los errores de validación.