Validação usando o documento JAXB e STAX para marechar XML
Pergunta
Eu criei um esquema XML (foo.xsd) e usei xjc
Para criar minhas classes de ligação para o JAXB. Digamos que o elemento raiz seja collection
E eu estou escrevendo n document
objetos, que são tipos complexos.
Porque pretendo escrever grandes arquivos XML, estou usando Stax para escrever o collection
elemento raiz e jaxb para marechal documentar subárvores usando Marshaller.marshal(JAXBElement, XMLEventWriter)
. Esta é a abordagem recomendada por Guia do usuário não oficial da JAXB.
Minha pergunta é: como posso validar o XML enquanto ele está sendo organizado? Se eu ligar um esquema ao Jaxb Marshaller (usando Marshaller.setSchema()
), Recebo erros de validação porque estou apenas marechando uma subárvore (está reclamando que não está vendo o collection
elemento raiz "). Suponho que o que eu realmente quero fazer é vincular um esquema ao Stax XMLEventWriter
ou algo assim.
Qualquer comentário sobre essa abordagem geral seria útil. Basicamente, eu quero poder usar JAXB
Para marechar e unir, grandes documentos XML sem ficar sem memória; portanto, se houver uma maneira melhor de fazer isso, me avise.
Solução
Algumas implementações STAX parecem ser capazes de validar a saída. Veja a seguinte resposta a uma pergunta semelhante: