IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Extraction d'informations [JAXB]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut Extraction d'informations
    Bonjour ,

    Je suis débutant dans la technologie JAX-B , je vous pose mon problème de conception :
    J'ai ma DTD de mon xml suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!ELEMENT events event* >
    <!ELEMENT event (start | pause)>
    <!ELEMENT start (at1)>
    <!ELEMENT pause (at2)>
    <!ELEMENT at1 (#PCDATA)>
    <!ELEMENT at2 (#PCDATA)>
    Voici un exemple de fichier xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE events SYSTEM "events.dtd">
    <events>
    	<event>
    		<start>
    			<at1>a</at1>
    		</start>
    	</event>
    	<event>
    		<pause>
    			<at2>b</at2>
    		</pause>
    	</event>
    </events>
    - "events" est ma liste des événements.
    - "event" est un type générique (classe interface dans mon code java )
    - "start" et "stop" sont tout les deux des types d'événements qui peuvent avoir différents attributs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    @Path("/")
    public interface event {
    	// récupére le type d'événement
    	public int getType();
    }
     
    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "StartMachineImpl",propOrder = {"at1"})
    public class start implements event{
    	private at1;
    	public int getType(){ return 1;}
    	// getter et setter qui vont bien ..
    }
     
    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "StartMachineImpl",propOrder = {"at2"})
    public class pause implements event{
    	private at2;
    	public int getType(){ return 2;}
    	// getter et setter qui vont bien ..
    }
     
     
    @XmlRootElement
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "EventListImpl", propOrder = {"list"})
    public class events{
    	@XmlElementWrapper(name = "events")
    	private List<event> list;
    	// getter et setter qui vont bien ..
    }
    Lors de l'appel sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @GET
    	@Path("LIST")
    	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })	
    	public events getEventsList();
    J'ai une classe qui me retourne les events. ( J'ai des données instancier ).
    Le fait est que cela ne fonctionne pas l'erreur que j'ai est "1 annotation is incorrect ...." sa aide beaucoup .... .
    Mais je pense que mon problème vient de l'interface qui n'appelle pas les classes "start" et "pause" pour retourner du xml car lorsque je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     private List<event> list; par private List<start> list;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      public events getEventsList();   par  public start getEventsList();
    dans la classe events et mon autre classe que j'ai pas montrée cela fonctionne trés bien mais je n'ai que des types "start", hors je voudrais avoir toutes les classes qui implementes mon interface "event".

    Autre anecdote lorsque je créé une fonction qui me retourne un type d'événement avec comme spec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	@GET
    	@Path("EVENT")
    	@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
    	public event getEvent();
    Bien cela créé bien mon événement en xml qu'il soit "start" ou "pause", je ne comprend pas pourquoi sa fonctionne en retournant une instance mais pas avec N instances .

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 14
    Par défaut
    Bonjour,

    J'ai fini par trouver une solution. J'ai créé le shéma XML XSD puis j'ai généré les classes avec la commande suivante : pour pouvoir modifier mon code ( car j'ai un autre besoin spécifique ).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraction d'informations à partir d'un fichier
    Par narmika dans le forum Langage
    Réponses: 7
    Dernier message: 26/09/2007, 13h45
  2. Réponses: 1
    Dernier message: 10/04/2007, 23h53
  3. extraction d'informations conditionnelle
    Par raboliot dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2007, 10h39
  4. [XSLT][PHP] Extraction d'informations d'un XML
    Par H¤N£y dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/12/2006, 10h05
  5. Extraction d'informations
    Par sam.fet dans le forum Linux
    Réponses: 2
    Dernier message: 15/06/2006, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo