/ / forward compatibilidade no unmarshalling usando JAXB - java, xml, jaxb, unmarshalling

compatibilidade frente no unmarshalling usando JAXB - java, xml, jaxb, unmarshalling

Eu tenho diferentes versões do esquema. Estou adicionando apenas atributos adicionais em versões futuras (não excluindo ou não alterando o tipo de dados). Eu quero manipular um dado vindo da versão futura. desmarque de esquema mais antigo funciona bem, mas quando eu tento desmarcar xml de versão superior usando xsd mais antigo, então ele falha. Eu quero evitar / negligenciar esse atributo extra. Por favor, sugira uma maneira de fazer isso.

Respostas:

0 para resposta № 1

O arquivo de esquema (xsd) mais antigo não inclui oatributos especificados como permitidos no arquivo de esquema mais recente. Quando o unmarshaller tenta validar um documento que inclui os novos atributos especificados pelo novo esquema contra o esquema mais antigo, ele falha porque os novos atributos são desconhecidos para o esquema antigo.

No entanto, o documentação aqui (ver 4.2.1 em particular) especifica que o conteúdo inválido é simplesmente ignorado pelo unmarshaller, que soa como o que você deseja. Eu não posso verificar isso independentemente, desde que eu não tentei. Você está usando a versão atual do JAXB?


0 para resposta № 2

Sem validação de esquema

Não haverá problemas, pois todo o conteúdo extra será ignorado.

Com validação de esquema

Preserve a compatibilidade com versões anteriores

Novos elementos / atributos devem ser adicionados para que sejam. É necessário estar presente (por exemplo, minOccurs="0").

Preserve a compatibilidade para a frente

Sempre valide contra a versão atual do esquema XML. Para isso, a versão mais recente do esquema XML deve sempre ser encontrada no mesmo local.