Bonjour,
je viens de me mettre à JAXB (2.0) du coup je suis pas encore familier avec les différentes notions qu'il arbore, mais je vais essayer d'être clair.
Je dois valider un message sous forme de texte en utilisant une XSD.
Pour ce faire le message est d'abord transformé en modèle JAXB.
Le modèle est validé en utilisant le marshaller préalablement configuré avec la XSD de validation.
Le message texte peut contenir plusieurs erreurs et j'aimerai que le processus de "marshalling" ne stoppe pas à la première erreur.
J'aimerai aussi récupérer la liste des erreurs et les "noeuds" impliqués.
Voici mon code:
Ce code est juste destiné à faire quelques tests.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 try { ValidationEventCollector collector = new ValidationEventCollector(); marshaller.setEventHandler(collector); marshaller.marshal(getXsdMessage(), new NullOutputStream()); } catch (Exception e) { e.printStackTrace(); collector.getEvents(); }
marshaller est une instance de Marshaller crée via une autre classe j'ai fait simple dans cet exemple en supposant qu'il était déjà initialisé.
En inspectant "collector" je ne trouve qu'une seule erreur et getNode retourne "null".
Dans la liste des éléments du locator je vois bien le nom du noeud qui pose problème mais je ne sais pas comment le récupérer.
Comment fait-on pour que le processus de marshalling ne stoppe pas lorsqu'il rencontre une erreur?
Comment fait-on pour récupérer ces erreurs en utilisant le ValidationEventCollector ?
D'avance merci
Partager