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.

Foi útil?

Solução

Algumas implementações STAX parecem ser capazes de validar a saída. Veja a seguinte resposta a uma pergunta semelhante:

Usando Stax2 com Woodstox

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top