javajaxbjaxb2

Class Cast Exception when trying to unmarshall xml?


Trying to get past a class cast exception here:

FooClass fooClass = (FooClass ) unmarshaller.unmarshal(inputStream);

throws this exception:

java.lang.ClassCastException: javax.xml.bind.JAXBElement

I don't understand this - as the class was generated by the xjc.bat tool - and the classes it generated I have not altered at all - so there should be no casting problems here - the unmarshaller should really be giving me back a class that CAN be cast to FooClass.

Any ideas as to what I am doing wrong?


Solution

  • Does FooClass have the XmlRootElement annotation? If not, try:

    Source source = new StreamSource(inputStream);
    JAXBElement<FooClass> root = unmarshaller.unmarshal(source, FooClass.class);
    FooClass foo = root.getValue();
    

    That's based on the Unofficial JAXB Guide.