Ich habe zwei Codes, in zwei verschiedenen Java-Projekten, die fast die gleiche Sache machen (die Eingabe eines Webservice nach einer xsd-Datei abmarshalieren).wann gibt JAXB unmarshaller.unmarshal ein JAXBElement <MySchemaObject> oder ein MySchemaObject zurück?
Aber in einem Fall sollte ich schreiben: (Input ist ein Platzhalter Name) (Element ist OMElement Eingang)
ClassLoader clInput = input.ObjectFactory.class.getClassLoader();
JAXBContext jc = JAXBContext.newInstance("input", clInput);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Input input = (Input)unmarshaller.unmarshal(element.getXMLStreamReader());
und in der anderen lib muss ich JAXBElement.getValue(), weil es ein JAXBElement, der zurückgegeben wird, und eine einfache (Input) werfen einfach abstürzt:
Input input = (Input)unmarshaller.unmarshal(element.getXMLStreamReader()).getValue();
wissen Sie, was zu einer solchen Differenz führt?
Ich denke, XSD macht Sinn, weil es davon abhängt, ob Sie zu einem SimpleType oder ComplexType entpacken. – Phani