Domanda

Ho creato uno schema XML (foo.xsd) e utilizzato xjc per creare le mie classi di associazione per JAXB. Diciamo che l'elemento principale è collection e sto scrivendo oggetti document N, che sono tipi complessi.

Perché ho intenzione di scrivere grandi file XML, sto usando Stax di scrivere l'elemento radice collection, e JAXB al maresciallo struttura dei documenti utilizzando Marshaller.marshal(JAXBElement, XMLEventWriter). Questo è l'approccio raccomandato da guida non ufficiale per l'utente del JAXB .

La mia domanda è, come posso convalidare il XML mentre viene marshalling? Se mi legano uno schema alla JAXB marshaller (usando Marshaller.setSchema()), ottengo errori di convalida, perché io sono solo di smistamento di una sottostruttura (si dice che non sta vedendo l'elemento principale collection "). Suppongo che quello che voglio fare è associare un schema per la Stax XMLEventWriter o qualcosa del genere.

Eventuali commenti su questo approccio globale sarebbe utile. Fondamentalmente io voglio essere in grado di utilizzare JAXB al maresciallo e grandi documenti XML unmarshalling senza esaurire la memoria, quindi se c'è un modo migliore per fare questo me lo faccia sapere.

È stato utile?

Soluzione

Alcune implementazioni Stax sembrano essere in grado di convalidare l'uscita. Vedere la seguente risposta a una domanda simile:

Uso Stax2 con Woodstox

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top