Desidero personalizzare il marshalling delle date in JAXB. È una variante di questa già richiesta question. Penserei che userei un XMLAdapter, come specifica le domande this answer.Come personalizzare JAXB Marshalling se si generano bean JAXB da XML
Ma non posso farlo esattamente, perché sto andando al contrario, generando i bean JAXB da un .XSD - Non posso aggiungere annotazioni ai bean JAXB perché sono codice generato.
Ho provato a chiamare Marshaller.setAdapter(), ma senza fortuna.
final Marshaller marshaller = getJaxbContext().createMarshaller();
marshaller.setSchema(kniSchema);
marshaller.setAdapter(new DateAdapter());
...
private static class DateAdapter extends XmlAdapter<String, XMLGregorianCalendar> {
@Override
public String marshal(XMLGregorianCalendar v) throws Exception {
return "hello"; //Just a test to see if it's working
}
@Override
public XMLGregorianCalendar unmarshal(String v) throws Exception {
return null; // Don't care about this for now
}
}
Se la parte rilevante della mia fagioli JAXB generato assomiglia a questo:
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar activeSince;
Quando faccio questo, ciò che lo smistamento data/XMLGregorianCalendar predefinita accade. È come se non avessi fatto tutto.
Qualsiasi aiuto è apprezzato.
Grazie,
Charles
Grazie, che funziona. Ero nuovo di JAXB e non mi ero reso conto che potevi personalizzare i binding in quel modo. –
Questo sito web java.net è stato rimosso e quindi l'URL del tutorial non funziona più. C'è un nuovo URL per quel tutorial? –