La validation en utilisant JAXB et Stax au maréchal document XML
Question
J'ai créé un schéma XML (foo.xsd) et utilisé xjc
pour créer mes classes de liaison pour JAXB. Disons que l'élément racine est collection
et je suis en train d'écrire N objets de document
, qui sont des types complexes.
Parce que je prévois d'écrire des fichiers XML volumineux, j'utilise Stax pour écrire l'élément racine collection
et JAXB au maréchal documents en utilisant les sous-arbres Marshaller.marshal(JAXBElement, XMLEventWriter)
. Telle est l'approche recommandée par guide de l'utilisateur non-officiel de JAXB .
Ma question est, comment puis-je valider le XML alors qu'il est en cours de rangea? Si je lie un schéma à la placier JAXB (à l'aide de Marshaller.setSchema()
), je reçois des erreurs de validation parce que je suis TRIAGE seulement un sous-arbre (il se plaint qu'il est de ne pas voir l'élément racine collection
"). Je suppose que ce que je veux vraiment faire est de lier une schéma à la Stax XMLEventWriter
ou quelque chose comme ça.
Les commentaires sur cette approche globale serait utile. Fondamentalement, je veux être en mesure d'utiliser JAXB
au maréchal et de gros documents XML sans désorganiser manquer de mémoire, donc s'il y a une meilleure façon de faire me le faire savoir.
La solution
Certaines implémentations Stax semblent être en mesure de valider la sortie. Voir la réponse suivante à une question similaire: