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 :

Désérialisation et balises optionnelles


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de lyxthe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 115
    Par défaut Désérialisation et balises optionnelles
    Bonjour,

    je souhaite exectuer un déserialization pour laquelle certaines balises sont optionnelles. Lorsque c'est le cas, les champs que doivent alimenter ces balises restent à null (jusque là tout fonctionne bien)

    Après la deserialization, je parcours l'ensemble de mes objets dans une méthode de check concistency, et pour tous les attibuts à null, je considère que la balise optionnelle n'était pas présente dans le xml et j'effectue un traitement particulier en conséquence (soit je laisse à null soit j'affecte un objet générique ...).

    Mon problème est que certaines de ces balises optionnelles n'alimentent pas des objets mais des types primitifs (int, double, boolean ...) et dans ce cas je ne peux pas tester après coup s'ils sont à null (de ce que j'ai compris un type primitif ne peut pas être à null).

    J'ai fait des converter qui, quand la valeur n'est pas présente, affecte une valeur que je sais reconnaitre (par exemple Integer.MINVALUE) mais ça ça marche si la balise est bien présente mais la valeur absente. Lorsque la valeur ET la balise est absente, je ne sais pas comment vérifier si mon attribut a été alimenté ou non.

    Est-ce que vous savez comment je peux tester si un attribut de type primitif a

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Par défaut
    Bonjour,

    Pour moi ton problème n'est pas lié à Xstream. Tu dis que dans ton XML tu peux avoir des valeurs optionnelles mais tu modélises un objet Java qui ne peut pas représenter une valeur optionnelle (tu as raison une variable primitive ne peut pas être nulle). Derrière tu vas te battre avec ton framework alors qu'il n'y a pas lieu...

    Si tu as un entier qui est optionnel le bon type Java pour le représenter est Integer, si c'est un booléen optionnel le bon type est Boolean, ... Pas de converter, pas de "magic value", pas de bidouille, pas besoin de se battre avec le framework pour combler une modélisation erronée.

    Romain.

  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
    Mon problème est que certaines de ces balises optionnelles n'alimentent pas des objets mais des types primitifs (int, double, boolean ...) et dans ce cas je ne peux pas tester après coup s'ils sont à null (de ce que j'ai compris un type primitif ne peut pas être à null).
    Je pense c'est bien raisonné, mais, ce n'est pas d'histoire complète en tenant compte le plate-forme qu'on y raisonne. En XStream, il ne le distingue pas trop type primitif et sa version dite "boxed". Il utilise systématiquement refléxions...

    J'ai regardé mon cas avec les données du texte qui n'est pas vraiment primitif. Quand je le modifie pour un cas primitif authentique, effectivement, ça pose de problème de tester avec null. Donc, je suis d'accord avec op et aussi avec rg77140 en ce qui concerne le parcours le plus simple c'est d'utiliser la version "boxed".

    Une piste de contourner le problème en tant que tel est effectivement suggerée dans le faq :
    http://xstream.codehaus.org/faq.html...flection_types

    ps J'ai fait une édition corrigée d'erreurs dans le message original et puis je fais une consolidation ici et maintenant pour ne pas créer confusion pous les lecteurs par hazards futurs comme il n'y encore aucune réaction depuis l'édition corrigée après un délai raisonnable. Je suis désolé pour le confusion qui puisse involontairement crée.

Discussions similaires

  1. [W3C] [HTML 4.01] balises optionnelles
    Par FaridM dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 19/04/2011, 08h56
  2. Désérialisation XML et balises vides
    Par regliss76 dans le forum C#
    Réponses: 14
    Dernier message: 12/04/2011, 11h32
  3. [SAX] Gestion des balises optionnelles
    Par anitshka dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 25/01/2006, 16h04
  4. [Documentation][XSLT][XSLFO]Les balises xslfo
    Par Lydiane dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/08/2002, 11h31
  5. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57

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