Validierung mit JAXB und Stax zum Marschall XML-Dokument
Frage
Ich habe ein XML-Schema (foo.xsd) und gebrauchten xjc
erstellt meine Bindungsklassen für JAXB zu erstellen. Nehmen wir an, das Wurzelelement ist collection
und ich schreibe N document
Objekte, die komplexe Typen sind.
Da ich plane große XML-Dateien zu schreiben, ich bin mit dem Stax collection
Wurzelelement zu schreiben, und JAXB zum Marschall Dokument Teilbäume Marshaller.marshal(JAXBElement, XMLEventWriter)
verwenden. Dies ist der Ansatz empfohlen von jaxb inoffizielle Führer des Benutzers.
Meine Frage ist, wie kann ich die XML-Validierung während es vermarshallten wird? Wenn ich bind ein Schema zum JAXB Einweiser (mit Marshaller.setSchema()
), I Validierungsfehler, weil ich nur einen Teilbaum Rangier (es beschwert sich, dass es nicht das collection
Wurzelelement "ist zu sehen). Ich nehme an, was wirklich tun möchte, ist ich bind ein Schema der Stax XMLEventWriter
oder so ähnlich.
Jede Kommentare zu dieser Gesamtansatz wäre hilfreich. Grundsätzlich mag ich in der Lage sein JAXB
zu Marschall zu verwenden und Abstellungs großen XML-Dokumenten ohne Speicher zur Neige, so dass, wenn es ein besserer Weg, dies zu tun, lassen Sie mich wissen.
Lösung
scheinen Einige Stax Implementierungen der Lage zu sein, zu validieren Ausgang. Siehe folgende Antwort auf eine ähnliche Frage: