Nous avons une classe, sans aucun contrôle sur la source, donc pas moyen de l'annoter pour JAXB. Nous avons également un cadre pour prendre soin de marshaling. Existe-t-il un moyen pour ce framework de demander à cette classe si elle est disponible en l'absence d'annotations?JAXB: comment dire si une classe est Marshalable sans annotations
2
A
Répondre
2
Il n'y a pas de mécanisme standard, mais je semblent les gens à accomplir cela en essayant de créer la JAXBContext de la classe:
public boolean isValidJAXBClass(Class aClass) {
try {
JAXBContext.newInstance(aClass);
} catch(JAXBException e) {
return false;
}
return true;
}
Vous n'avez pas besoin des annotations pour rassembler un objet JAXB. Vous pouvez contourner avoir avoir un @XmlRootElement en l'enveloppant dans un JAXBElement.
Si vous voulez un autre moyen de représenter les métadonnées, EclipseLink JAXB (MOXy) a un fichier de liaison extériorisée basé sur les métadonnées JAXB
Un exemple de fichier ressemble à:
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
<java-types>
<java-type name="org.example.order.PurchaseOrder">
<java-attributes>
<xml-attribute java-attribute="id"/>
<xml-element java-attribute="customer">
<xml-java-type-adapter value="org.example.order.CustomerAdapter"/>
</xml-element>
<xml-element java-attribute="lineItems" name="line-item"/>
</java-attributes>
</java-type>
</java-types>
</xml-bindings>
Pour plus d'informations, voir: