Comment Personnaliser JAXB de Triage si la génération JAXB haricots à partir de XML
Je veux personnaliser le triage des dates dans JAXB. C'est une variante de ce déjà demandé question. Je pense que j'utiliserais un XMLAdapter, comme cette réponse questions précise.
Mais je ne peux pas faire exactement, parce que je vais dans l'autre sens, la génération de la JAXB de haricots provenant d'une .XSD -- je ne peux pas ajouter des annotations à la JAXB haricots, car ils sont le code généré.
J'ai essayé d'appeler Marshaller.setAdapter(), mais avec pas de chance.
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
}
}
Où la partie concernée de mon généré JAXB bean ressemble à ceci:
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar activeSince;
Quand je fais cela, ce que la date par défaut/XMLGregorianCalendar de triage qui se passe. C'est comme si je n'avais pas tout faire.
Toute aide est appréciée.
Merci,
Charles
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de changer le type sur la XJC-Java généré est d'utiliser une liaison de personnalisation.
https://jaxb.dev.java.net/guide/Using_different_datatypes.html
Que la page ne vous dit pas comment réellement fil de la personnalisation, cependant, ont donc un coup d'oeil ici pour voir comment faire:
http://jaxb.java.net/tutorial/section_5_6_1-Overriding-the-Datatype.html#Overriding%20the%20Datatype