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 :

XML element avec attribut - generation XJC [XSD]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut XML element avec attribut - generation XJC
    Bonjour,

    je souhaite définir un type énuméré avec un attribut de la forme:

    <param>
    <enum attr="attr1">valeur 1</enum>
    <enum attr="attr2">valeur 2</enum>
    </param>


    Donc j'ai défini mon XSD comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!-- param -->
    <xsd:complexType name="ParamType">
       <xsd:sequence>
          <!-- enumType -->
          <xsd:element name="enum" type="enumType"
                    minOccurs="0" maxOccurs="unbounded">
          </xsd:element>
       </xsd:sequence>
    </xsd:complexType>
     
    <!-- enumType -->
    <xsd:complexType name="enumType">
      <xsd:attribute name="attr" type="xsd:string" use="required" />
    </xsd:complexType>
    Je compile mon code et j'obtiens une classe java EnumType avec les fonctions getAttr() et setAttr(string value).

    Question: comment puis-je lire la valeur de mon EnumType? La génération ne m'offre aucune fonction pour lire ce qu'il y a entre <enum> et </enum>.

    Pour le moment je contourne le problème en créant un attribut "value" et je lis dedans, mais ca m'oblige à abandonner le format <enum attr="">value</enum> au profit de <enum attr="" value="value" />, ... ce qui me dérange "conceptuellement" parlant.

    Merci par avance pour tout dépannage!

    ... et bonnes fêtes

  2. #2
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Par défaut
    Trouvé!

    Il suffit pour info d'utiliser l'attribut mixed qui vaut par défaut "false", et de le placer à "true" comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <!-- enumType -->
    <xsd:complexType name="enumType" mixed="true">
       <xsd:attribute name="value" type="xsd:string" use="required" />
       <xsd:attribute name="refType" type="xsd:string" use="optional" />
    </xsd:complexType>
    Et là, on obtient l'interface suivante où 2 nouvelles fonctions ont été générées - getContent() et setContent(String value):

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    public interface EnumType {
     
     
        /**
         * Gets the value of the content property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        String getContent();
     
        /**
         * Sets the value of the content property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        void setContent(String value);
     
        /**
         * Gets the value of the value property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        String getValue();
     
        /**
         * Sets the value of the value property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        void setValue(String value);
     
        /**
         * Gets the value of the refType property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        String getRefType();
     
        /**
         * Sets the value of the refType property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        void setRefType(String value);
     
    }
    Il est maintenant possible d'exploiter la forme suivante:
    <enum refTyp="" value="">Ici une valeur</enum>

    en appelant pour un EnumType enum, enum.getContent(); qui retournera la chaîne: "Ici une valeur"

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

Discussions similaires

  1. Recherche d'un element xml via un attribut
    Par titan_33 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 05/08/2008, 10h50
  2. [XSD] Eléments avec même nom et attributs différents
    Par stanware dans le forum Valider
    Réponses: 3
    Dernier message: 24/06/2008, 17h44
  3. lire xml avec attributs dans balises
    Par cd090580 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/01/2008, 19h27
  4. Glassfish + messages XML avec attributs
    Par pidjipi dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 11/06/2007, 18h50
  5. Réponses: 1
    Dernier message: 21/11/2006, 13h28

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