Devo convalidare l'oggetto Class contro il mio schema in cui ho fornito un'espressione regolare per convalidare i campi per le classi JAXB generate automaticamente. Quando cerco di convalidare il mio oggetto di classe ottengo sotto l'errore:Impossibile eseguire il marshalling come elemento perché manca un'annotazione @XmlRootElement per le classi generate automaticamente
grado di maresciallo tipo "xyz" come un elemento perché manca un'annotazione @XmlRootElement
Ecco il codice che uso per validare il mio oggetto classe autogenerato:
jc = JAXBContext.newInstance(obj.getClass());
source = new JAXBSource(jc, obj);
Schema schema = schemaInjector.getSchema();
Validator validator = schema.newValidator();
validator.validate(source);
C'è qualche altro modo per risolvere questo problema?
Grazie per l'aiuto. Ho modificato il mio codice come da soluzione sul tuo blog ma sto ancora ricevendo lo stesso errore. codice modificato è: 'QName qName = new QName (" http://www.w3.org/2001/XMLSchema ", obj.toString());' 'JAXBElement e = createJAXBElement (qName, obj.getClass(), obj); '' jc = JAXBContext.newInstance (e.getValue(). getClass()); '' Marshaller m = jc.createMarshaller(); '' source = new JAXBSource (jc, m.getClass()); ' 'Schema schema = schemaInjector.getSchema();' 'Validator validator = schema.newValidator();' 'validator.validate (source);' _Please advice_ –
user656213
Ho trovato utile questa risposta: http://stackoverflow.com/a/2172942/58363 Fornisce una formulazione alternativa alla risposta di @ Blaise-doughan. –