mapping JAXB, recouper des fichiers XML

mapping JAXB, recouper des fichiers XML - XML/XSL - Programmation

Marsh Posté le 19-08-2006 à 02:14:20    

Bonjour
Je vais commencer par exposer ma problématique.
J'ai un fichier xml qui contient par exemple :
<foo><foo1><element nom="nom1" type="prettyType1"/><element nom="nom2" type="prettyType2"/><element nom="nom3" type="prettyType3"/>
</foo>
 
J'ai un XMLSchema qui me permet de générer les classes java correspondant avec JAXB. Aucun soucis jusque là.
 
J'ai un deuxième fichier xml qui contient des associations, exemple :
<mapping><type value="prettyType1" equivalent="qsdfg"/></type value="prettyType2" equivalent="azert"/></mapping>
 
Ce que je voudrais, c'est pouvoir appeler une methode .getEquivType() sur mes objets générés, méthode qui renverrait la valeur associé qu'on trouve dans ce deuxième fichier XML.
 
Quelles idées avez vous pour résoudre cette problématique ?
 
Est il possible d'utiliser une transfo XSL pour récuperer les valeurs dans le second fichier xml et rajouter un attribut dans le premier ?
L'inconvénient est que cela doit se faire avant le mapping, donc si on change le 2eme fichier, il faudra refaire une génération.
 
Est-il possible, de générer les classes pour ces 2 formats de XML différents, mais que pour le premier , les éléments "Type" deviennent des objets contenant des références à des classes générées à partir du deuxième XML ?
 
Autre idée, pour chaque objet (correspondant au premier fichier XML), je pourrais appeler une méthode sur un second objet (correspondant au 2eme fichier XML) du genre mappingObject.getEquiv("prettyType1" ). Par contre je n'ai aucune idée de comment faire ce mapping, qui est un peu différent du fonctionnement mapping JAXB. (d'ailleurs si quelqu'un a une réponse à cette problématique, ça m'intéresse fortement, ça me servira surement plus tard).
 
Il reste la solution du parseur, un champ vide "equiv" dans le premier fichier, et une fois le mapping fait, je parcours mon objet racine et le second fichier XML pour lui affecter la bonne valeur.
 
Merci de vos conseils!


Message édité par axelazerty le 19-08-2006 à 02:26:31
Reply

Marsh Posté le 19-08-2006 à 02:14:20   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed