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.Validierung mit JAXB und Stax zum Marschall XML-Dokument
Da ich plane, große XML-Dateien zu schreiben, verwende ich Stax, um das collection
Wurzelelement zu schreiben, und JAXB, um Dokumentunterstrukturen unter Verwendung von Marshaller.marshal(JAXBElement, XMLEventWriter)
zu marshalieren. Dies ist der von jaxb's unofficial user's guide empfohlene Ansatz.
Meine Frage ist, wie kann ich das XML validieren, während es Marshalled ist? Wenn ich ein Schema an den JAXB-Marshaller binde (unter Verwendung von Marshaller.setSchema()
), bekomme ich Validierungsfehler, weil ich nur einen Teilbaum sortiere (es beschwert sich, dass es das collection
root-Element nicht sieht.) Ich nehme an, was ich wirklich tun möchte, ist bind a Schema der Stax XMLEventWriter
oder so ähnlich.
Alle Kommentare zu diesem Gesamtansatz wären hilfreich. Grundsätzlich mag ich in der Lage seine JAXB
zu verwenden, um Marschall und Abstellungs große XML-Dokumente ohne aus dem Speicher ausgeführt wird, so dass, wenn es eine ist besser Möglichkeit, dies zu tun, lassen Sie mich wissen.
+1 Gute Frage. – skaffman