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 :

Mapping à un élément DOM


Sujet :

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

  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Par défaut Mapping à un élément DOM
    Bonjour,

    Je dois unmarshaller un document XML comme celui-ci présenté ci-dessous:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <message>
     <header>
         <id>21534654</id>
         <type_msg>UZIRZO</typemsg>
         <....>
     </header>
      <content id="9389321">
          <equipement>PompeBac</equipement>
          <ligne>empaquetage</ligne>
          <productionid>2992831323</productionid>
          <...>
      </content>
    </message>

    Je suis surtout intéressé par le header et j'aimerais obtenir le content sous forme d'un élément DOM.
    J'ai donc défini les attributs à la classe mappé comme suit:

    Code java : 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
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "header",
        "content"
    })
    @XmlRootElement(name = "Message")
    public class Message {
     
        @XmlElement(name = "header", required = true)
        protected Message.Header header;
     
        @XmlAnyElement
        protected Element content;
     
        public Message.Header getHeader() {
            return header;
        }
     
        public void setHeader(Message.Header value) {
            this.header = value;
        }
     
        public Element getContent() {        
            return this.content;
        }
    }

    Le hic est que pour obtenir la valeur de l'attribut de l'id, je suis obligé d'appeler la méthode getAttribute.
    En réalité j'aimerais bien que l'attribut Id soit mappé à une propriété IdContent de ma classe Message.

    Est-ce possible ? Et si oui, comment puis-je procéder ?
    Merci d'avance,
    Etienne

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Ben non, pas si tu le récupères sous forme d'élément DOM -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    [0] Comme vous codez les classes manuellement, ça devient possible malgré ça prend l'air un peu poussé. Voici les éléments minimaux qu'il faut rajouter dans la classe Message.(Raffinement est possible ou nécessaire selon les cas.) Est-ce que ça serve grande chose ou pas, je ne questionne pas ici: c'est juste pour illustrer l'idée de le faire.

    [1] La propriété id, par exemple, de type Integer (ou d'autre comme BigInteger: ça dépend..., si on accept String, c'est plus genereux et moins exigence comme ce n'est pas nécessairement une opération schéma validante). Mais il faut ajouter une annotation en plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @javax.xml.bind.annotation.XmlTransient
    protected Integer id;
    [2] Codez une méthodes getId().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Integer getId() {
        return this.id;
    }
    [3] Modifiez le getter de content (du type org.w3c.dom.Element) comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Element getContent() {
        //adding this (house keeping)
        if (this.content!=null && this.content.getAttribute("id")!=null) {
            try {
                this.id=Integer.parseInt(this.content.getAttribute("id"));
            } catch (java.lang.NumberFormatException e) {
                //do something if needed
            }
        }
        return this.content;
    }
    [4] Modifiez le setter de content (du type org.w3c.dom.Element) comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void setContent(Element elem) {
        this.content=elem;
        //adding this (house keeping)
        try {
            this.id=Integer.parseInt(this.content.getAttribute("id"));
        } catch (java.lang.NumberFormatException e) {
            //do something if needed
        }
    }
    [5] Dans une application, on peut par conséquence faire appeller le id dans une contexte quelque peu comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Message msg est establi.
    Element content=msg.getContent();
    System.out.println(content.getAttribute("id"));
    //ou
    System.out.println(msg.getId());

Discussions similaires

  1. Détecter l'élément DOM parent
    Par Dev@lone dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/05/2010, 12h39
  2. Accéder à un élément DOM chargé en ajax
    Par orgoz dans le forum jQuery
    Réponses: 5
    Dernier message: 11/01/2010, 09h44
  3. [svg+xhtml+javascript+dom+php] L'élément dom créé n'existe pas
    Par Lcf.vs dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/01/2010, 15h08
  4. [DOM] Ajouter un champ sur élément DOM créer
    Par xillibit dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/04/2009, 14h33
  5. [DOM] Création d'éléments DOM - Pb IE6
    Par brazilia28 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 22/07/2008, 15h13

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