Potrzebuję zweryfikować obiekt klasy w stosunku do mojego schematu, w którym podałem wyrażenie regularne, aby zweryfikować pola automatycznie generowanych klas JAXB. Kiedy staram się potwierdzić moją klasę obiektu otrzymuję poniżej błędu:Nie można ustawić typu marszałka jako elementu, ponieważ brakuje mu adnotacji @XmlRootElement dla wygenerowanych automatycznie klas
stanie zebrać typu „xyz” jako element, ponieważ brakuje adnotacji @XmlRootElement
Oto kod, który używam do sprawdzania poprawności mój obiekt klasy generowany automatycznie:
jc = JAXBContext.newInstance(obj.getClass());
source = new JAXBSource(jc, obj);
Schema schema = schemaInjector.getSchema();
Validator validator = schema.newValidator();
validator.validate(source);
Czy istnieje inny sposób rozwiązania tego problemu?
Dzięki za pomoc. Zmodyfikowałem swój kod zgodnie z rozwiązaniem na Twoim blogu, ale wciąż mam ten sam błąd. zmodyfikowany kod to: '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()); ' 'Schemat schematu = schemaInjector.getSchema();' 'Validator validator = schema.newValidator();' 'validator.validate (source);' _Please advice_ –
user656213
Ta odpowiedź była pomocna: http://stackoverflow.com/a/2172942/58363 Daje alternatywne brzmienie odpowiedzi @ Blaise-doughana. –