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

Persistance des données Java Discussion :

[JAXB] Attribut nillable


Sujet :

Persistance des données Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut [JAXB] Attribut nillable
    Salut
    J'ai dans mon fichier xsd un element CODE_PAYSde type xs:string avec length=2 et nillable=true.
    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
     
    <xs:element name="PAYS" minOccurs="0">
    					<xs:complexType>
    						<xs:all>
    							<xs:element name="CODE_PAYS" nillable="true">
    								<xs:simpleType>
    									<xs:restriction base="xs:string">
    										<xs:maxLength value="2"/>
    									</xs:restriction>
    								</xs:simpleType>
    							</xs:element>
    							<xs:element name="NOM_PAYS" nillable="true" minOccurs="0">
    								<xs:simpleType>
    									<xs:restriction base="xs:string">
    										<xs:maxLength value="70"/>
    									</xs:restriction>
    								</xs:simpleType>
    							</xs:element>
    						</xs:all>
    					</xs:complexType>
    				</xs:element>
    Mais le probléme est que si dans mon fichier XML ,l'element pays est null, mon document n'est plus valide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <PAYS>
    		<CODE_PAYS/>
    		<NOM_PAYS/>
    	</PAYS>
    Pourquoi mon fichier XML n'est pas valide malgrés que l'element CODE_PAYS est nillable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Value " is not allowed for element <COD_PAYS>
    Reason:Value " violates 'length' facet value "2"

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 615
    Points
    21 615
    Par défaut
    Malheureusement, vide et null sont deux choses différentes.

    C'est comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String s1 = "";
    String s2 = null;
    Pour indiquer une valeur null en JAXB, il me semble qu'on utilise l'attribut xsi:nil="true" sur l'élément concerné.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Malheureusement, vide et null sont deux choses différentes.

    C'est comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String s1 = "";
    String s2 = null;
    Pour indiquer une valeur null en JAXB, il me semble qu'on utilise l'attribut xsi:nil="true" sur l'élément concerné.
    Merci thelvin pour la réponse mais j'ai pas bien compris la différence entre nillable et xsi:nill
    De plus ,ou je doit utiliser l'élément xsi:nil=true dans le XSD ou dans le XML?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 615
    Points
    21 615
    Par défaut
    Citation Envoyé par riadhhwajdii Voir le message
    Merci thelvin pour la réponse mais j'ai pas bien compris la différence entre nillable et xsi:nill
    Ben, nillable signifie que tu as le droit de mettre xsi:nil. Ne peut avoir xsi:nil que ce qui est nillable.

    Citation Envoyé par riadhhwajdii Voir le message
    De plus ,ou je doit utiliser l'élément xsi:nil=true dans le XSD ou dans le XML?
    Le XML, donc.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ben, nillable signifie que tu as le droit de mettre xsi:nil. Ne peut avoir xsi:nil que ce qui est nillable.



    Le XML, donc.
    N'existe t'il pas une solution qui me permet de mettre un element XML à vide sans lui ajouter xsi:nil?

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 615
    Points
    21 615
    Par défaut
    Normalement il suffit de tolérer une longueur de zéro.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. JAXB attribut xsi:nil lors du marshalling
    Par riadhhwajdii dans le forum Persistance des données
    Réponses: 5
    Dernier message: 22/09/2010, 16h54
  2. [JAXB] Parser un attribut d'élément
    Par BiM dans le forum Persistance des données
    Réponses: 3
    Dernier message: 06/05/2009, 14h33
  3. [JAXB]xjc et javadoc des attributs
    Par brasinamical dans le forum Persistance des données
    Réponses: 0
    Dernier message: 01/12/2008, 11h18
  4. [JAXB 2.0] customization attribute
    Par noOneIsInnocent dans le forum Persistance des données
    Réponses: 1
    Dernier message: 26/06/2008, 10h06
  5. attribut nillable dans un xsd
    Par SGJ dans le forum Valider
    Réponses: 1
    Dernier message: 21/03/2006, 17h44

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