Validierung mit JAXB und Stax zum Marshallen des XML-Dokuments

8

Ich habe ein XML-Schema (foo.xsd) erstellt und xjc verwendet, um 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 große XML-Dateien schreiben möchte, verwende ich Stax, um das Wurzelelement collection auszugeben, und JAXB, um Dokumentunterstrukturen mit Marshaller.marshal(JAXBElement, XMLEventWriter) zu marshalieren. Dies ist der Ansatz, der von dem inoffiziellen Benutzerhandbuch von jaxb empfohlen wird.

Meine Frage ist, wie kann ich das XML validieren, während es gemarshallt wird? Wenn ich ein Schema an den JAXB-Marshaller binde (mit Marshaller.setSchema() ), erhalte ich Validierungsfehler, weil ich nur einen Teilbaum migriere (er beschwert sich, dass er das collection root-Element nicht sieht). Ich nehme an, was ich wirklich will do bindet ein Schema an das Stax XMLEventWriter oder etwas ähnliches.

Kommentare zu diesem Gesamtkonzept wären hilfreich. Im Grunde möchte ich in der Lage sein, JAXB zu verwenden, um große XML-Dokumente zu marshalieren und zu entfernen, ohne den Speicher zu leeren. Wenn es einen besseren Weg gibt, lass es mich wissen.

    
bajafresh4life 18.03.2010, 15:40
quelle

1 Antwort

3

Einige Stax-Implementierungen scheinen in der Lage zu sein, die Ausgabe zu validieren. Siehe die folgende Antwort auf eine ähnliche Frage:

Verwenden von Stax2 mit Woodstox

    
Christian Semrau 20.03.2010, 23:02
quelle

Tags und Links