2009-04-30 14 views
19

Najwyraźniej w wersji 2 JAXB - klasa sprawdzania poprawności została uznana za przestarzałą - czy to oznacza, że ​​program sprzęgający automatycznie sprawdza poprawność kodu XML? Jeśli tak, to nie wydaje się narzekać na niektóre niepoprawne XML, które tworzę! Czy ktoś może mi doradzić, w jaki sposób mogę sprawdzić poprawność sformatowanego XML, aby upewnić się, że jest zgodny ze schematem XSD.Czy można zwalidować sformatowany XML z JAXB 2.0?

Wielkie dzięki.

Odpowiedz

27

Możliwości sprawdzania poprawności zostały rozszerzone w JAXB 2.0 dzięki wykorzystaniu schematu walidacji schematu JAXP 1.3.

Gdzie zanim zrobił:

unmarshaller.setValidating(true); 

teraz trzeba zrobić:

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

Jeśli przekazać null w setSchema, to wyłącza sprawdzanie.

Proszę sprawdzić this reference.

+1

Czy umieścisz ten sam kod dla MARSHALLER - ten kod wygląda jak dla UNMARSHALLER ... – Vidar

+1

Tak. Możesz zrobić dokładnie to samo dla marshallera i unmarshallera. –

2

Jeśli szukasz zweryfikować obiekty Java wygenerować poprawny XML zgodnie ze schematem, spojrzeć na projekt JAXB-kontrolny:

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

Jest to plugin JAXB RI do XJC który będzie generował Implementacja ObjectVerifier dla schematu XML. Pozwala to uniknąć konieczności marnowania obiektów Java w celu sprawdzenia poprawności kodu XML.

Powiązane problemy