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] Unmarshalling retourne une structure vide


Sujet :

Persistance des données Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut [JAXB] Unmarshalling retourne une structure vide
    Bonsoir,

    J'ai généré mes classes avec xjc depuis une DTD. La classe générée est la suivante :

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    //
    // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.0.3-b01-fcs 
    // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
    // Any modifications to this file will be lost upon recompilation of the source schema. 
    // Generated on: 2008.03.06 at 06:06:14 PM CET 
    //
     
     
    package com.estar.bo.insurance.mondial.services.generated;
     
    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;
    import javax.xml.bind.annotation.XmlType;
     
     
    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;choice>
     *         &lt;element name="contractNumber" type="{http://www.mondial-assistance.com/ecommerce/schema/}contractNumberType"/>
     *         &lt;element name="error" type="{http://www.mondial-assistance.com/ecommerce/schema/}errorType"/>
     *       &lt;/choice>
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "contractNumber",
        "error"
    })
    @XmlRootElement(name = "subscriptionACK")
    public class SubscriptionACK {
     
        @XmlElement(namespace = "")
        protected String contractNumber;
        @XmlElement(namespace = "")
        protected ErrorType error;
     
        /**
         * Gets the value of the contractNumber property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getContractNumber() {
            return contractNumber;
        }
     
        /**
         * Sets the value of the contractNumber property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setContractNumber(String value) {
            this.contractNumber = value;
        }
     
        /**
         * Gets the value of the error property.
         * 
         * @return
         *     possible object is
         *     {@link ErrorType }
         *     
         */
        public ErrorType getError() {
            return error;
        }
     
        /**
         * Sets the value of the error property.
         * 
         * @param value
         *     allowed object is
         *     {@link ErrorType }
         *     
         */
        public void setError(ErrorType value) {
            this.error = value;
        }
     
    }
    Quand je lance l'unmarshalling, il me retourne mon objet subscriptionACK avec ses deux valeurs à null. Avez-vous une idée du soucis ?

    Voici un exemple de xml passé au unmarshaller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"?>
     
    <subscriptionACK xmlns="http://www.mondial-assistance.com/ecommerce/schema/">
      <contractNumber>ESTGB0009999104</contractNumber>
    </subscriptionACK>

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Hello,

    Pour ajouter de l'eau au moulin, j'ai marshallé l'objet que je souhaitait obtenir (celui qui est replit avec null à tous les champs) et voici la différence :

    Le XML qui m'est retourné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String result = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><subscriptionACK xmlns=\"http://www.mondial-assistance.com/ecommerce/schema/\"><contractNumber>ES9098</contractNumber></subscriptionACK>";
    Et le XML que j'ai moi même marshallé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String marRes = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ns2:subscriptionACK xmlns:ns2=\"http://www.mondial-assistance.com/ecommerce/schema/\"><contractNumber>ES9098</contractNumber></ns2:subscriptionACK>";
    Y a-t-il un paramètre dans JAXB pour pallier à cela ?
    Merci

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Finalement il s'avère que c'est un bug de jaxb qui gère mal les namespace vides (https://jax-ws.dev.java.net/issues/show_bug.cgi?id=464).
    Donc pour l'instant je contourne en faisant des replace() dans mon String XML

    Si quelqu'un à une meilleure idée ...

Discussions similaires

  1. [find] Retourne une matrice vide
    Par Flaherty Mc Coillean dans le forum MATLAB
    Réponses: 15
    Dernier message: 27/02/2009, 16h17
  2. Criteria retourne une liste vide
    Par *alexandre* dans le forum Hibernate
    Réponses: 6
    Dernier message: 07/01/2009, 17h45
  3. retourner une structure pour une fonction
    Par emardjean dans le forum C
    Réponses: 5
    Dernier message: 24/01/2007, 20h36
  4. Retourner une structure
    Par MogDeChNord dans le forum C
    Réponses: 14
    Dernier message: 22/06/2006, 08h08
  5. Réponses: 6
    Dernier message: 14/02/2006, 11h29

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