Pergunta

Aparentemente, na versão 2 do JAXB - a classe validador foi preterido - isso significa o marshaller é validar automaticamente o XML? Se assim for, não parece estar reclamando sobre algumas das XML incorreta estou formando! Alguém pode me dar alguns conselhos sobre como eu pode validar XML marshalled para se certificar de que está em conformidade com o esquema XSD.

Muito obrigado.

Foi útil?

Solução

capacidades de validação foram ampliados em JAXB 2.0 através do uso do JAXP 1.3 Schema Validation Framework.

Onde antes que você fez:

unmarshaller.setValidating(true);

Agora que você precisa fazer:

SchemaFactory sf = SchemaFactory.newInstance(
    javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("myschema.xsd"));
unmarshaller.setSchema(schema);

Se você passar null em setSchema, desativa a validação.

Verifique este referência.

Outras dicas

Se você está procurando para verificar os objetos Java gerar XML válido de acordo com um esquema, olhada no projeto JAXB-Verificação:

https://jaxb-verification.dev.java.net/

É um JAXB RI plugin para xjc que irá gerar uma implementação ObjectVerifier para o esquema XML. Isso evita ter de organizar os objetos Java, a fim de validar o XML.

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