Valino contra XMLSchema en Java, y obtengo SAXParseExceptions cuando tengo modelos de contenido no válidos.Cómo usar SAXParseException de manera efectiva en Java
Voy a utilizar estas excepciones para resaltar dónde ha fallado la validación, pero las SAXParseExceptions parecen tener un nivel demasiado bajo.
Por ejemplo, en el caso de una falla en una enumeración, aparece el error de validez de que el valor proporcionado no coincide con el modelo de contenido en una excepción y el elemento al que se aplica en la siguiente.
Estoy pensando que necesito tener una utilidad que resuma un poco para unir los errores relacionados y analizar el texto de excepción en propiedades de excepción utilizables.
¿Es este un enfoque razonable, o simplemente me falta algo, o tal vez una biblioteca o clase de ayuda?
Actualizar @timgilbert, gracias por la respuesta.
Por ejemplo, un SAXParseException que conocer en t'internet
cvc-pattern-valid: Value 'en' is not facet-valid
with respect to pattern '([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*'
Las cosas claves para mí son
- Elemento 'es' al que se aplica esta excepción. ¿Por qué no puedo llamar a exception.getElement() o algo así, y por qué no un XPath para el elemento en cuestión? ¡Más útil con un documento en memoria que el número de línea y columna!
- Es un error de validación de patrón. ¿Por qué no puedo obtener algo así como una enumeración de posibles tipos de falla y una referencia a la adecuada?
- El patrón real en el que falló la validación.
- habrá otra excepción lanzada junto a decirme el valor del elemento 'es' que causó el problema que necesito para combinar
Un ejemplo de lo que me gustaría ser capaz de hacer es que las personas envíen un documento y el documento se destaque donde la validación falla con un mensaje fácil de usar: el mensaje de error de arriba no parece muy amigable ... tener que analizar por comillas simples parece un accidente esperando que ocurra :)
Creo que tal vez estoy haciendo mal con la cosa 'referencia-a-elemento', y tal vez debería tener una transformación de identidad del documento por defecto como parte de la validación, y augmen t la transformación con atributos de validación-error que puedo elegir con CSS. Eso aún no ayudará si necesito analizar los mensajes para hacerlos más amigables ...
Re: tight binding, javax.xml.validation.Validator.validate() throws org.xml.sax.SAXException de todos modos - no estoy seguro de cómo puedo conseguir lejos de asumir la unión ...
Saludos
+1, acabo de encontrar el mismo tipo de problema esta mañana. gracias por publicar. –
¡No hay problema, me alegro de que no sea solo que soy tonto! – Brabster
Tengo un problema muy similar. ¿Encontró una solución que hace que sea más fácil hacer que estos errores sean más fáciles de usar? – Turismo