JAXB da Java a XML: come non stampare i membri di tipo primitivo quando predefinito
-
22-07-2019 - |
Domanda
Primo tentativo di utilizzare questo sito interessante, dopo aver cercato per 2 ore: Quindi ho un Java Bean che mi viene dato (posso solo annotare non cambiare) e ho bisogno di mapparlo su XML usando JAXB. Vorrei che i tipi di primitive non venissero stampati quando contengono la lingua predefinita o predefinita dall'utente.
Come detto, non posso cambiare il java bean, e quindi cambiare i tipi primitivi nelle loro controparti Object Wrappers.
Come lo fai meglio?
Esempio di bean:
class Foo {
public String name;
// -1 is user defined default, to indicate field is not set.
public long someIdx=-1;
// ...
}
Foo f = new Foo();
f.name = "Duke";
per questa istanza, ciò che vorrei è il seguente output:
<foo><name>Duke</name></foo>
Soluzione
È possibile utilizzare XmlAdapters di JAXB. Disponibile da JAXB 2.0 (JDK 6.0)
Usando l'adattatore, lasciate solo il bean e annotate / cambiate una classe completamente diversa. Questo non dovrebbe essere un problema nel tuo caso.