Gestion des éléments imbriqués dans JAXB
Je me demande si c'est possible d'avoir JAXB de ne pas créer d'objet Java pour XML les éléments qui servent de wrappers. Par exemple, pour le XML de la structure suivante
<root>
<wrapper>
<entity/>
</wrapper>
</root>
Je ne veux pas d'un objet pour <wrapper>
à être créé à tous les. Ainsi, pour une classe comme
class Root {
private Entity entity;
}
la <entity>
élément doit être unmarshalled directement dans le champ entity.
Est-il possible de réaliser avec JAXB?
source d'informationauteur fnt
Vous devez vous connecter pour publier un commentaire.
Mais il faut de codage supplémentaire, désiré unmarshalling peut être fait de cette façon en utilisant transitoire objet wrapper:
EclipseLink MOXy offre un JAXB 2.2 mise en œuvre avec des extensions. L'une des fonctionnalités étendues est d'utiliser XPath pour naviguer à travers les couches du XML, vous ne voulez pas dans votre domaine modèle.
Si vous regardez:
http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted/MOXyExtensions
vous remarquerez que le nom du Client est stocké à l'intérieur, mais que le nom est un attribut de Chaîne de la Clientèle. Ceci est accompli en utilisant:
J'espère que cette aide,
Doug
Le point de l'ensemble de JAXB ou d'autres systèmes de cartographie est de cartographier les éléments et de leur hiérarchie de classes. Dans votre exemple, vous semblez vouloir JAXB pour en quelque sorte de savoir qu'il peut maréchal entité wrapper/de l'entité et vice-versa, sans réellement créer la classe utilisée pour l'emballage de la cartographie et de la connexion entre la racine et de l'entité. Qui, tel que présenté, est à peu près équivalent à demander comment brancher un moteur de voiture pour les roues, sans un arbre d'entraînement.
Donc, sauf si je suis à côté de la question, la réponse n'est ni JAXB ou de tout autre programme de cartographie peuvent le faire. Vous pouvez éviter de créer des classes en utilisant quelque chose qui ne la cartographie purement dynamiquement (voir Groovy, GPath pour un exemple), mais qui évite la création de toutes les classes, et pas seulement de sauter un niveau intermédiaire dans une hiérarchie.