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 en supprimant un niveau


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut Désérialisation en supprimant un niveau
    Bonjour,

    Je cherche a créer une xsd pour modéliser un flux xml.

    J'utilise ce xml dans le cadre d'un web services document litteral (avec une xsd dans le wsdl pour la définition des objets).

    mes objets sont

    document
    --headers
    --records
    *n----record

    à la désérialisation je souhaiterais cependant que l'objet généré par jaxb soit comme ceci:

    document
    --headers
    *n--record

    en gros, ramener la liste des records en dessous de l'objet document. Je ne sais pas si c'est dans la xsd ou si c'est dans jaxb que je peux définir ce comportement (et même si je le peux).

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Par défaut
    Bonjour,

    question peut être bête mais tu ne pourrais pas ajouter tout simplement une methode dans la classe de binding Document?
    Normalement tu as déjà Document.getRecords().getRecord() j'imagine, qui te renvoi une liste de Record. Ajoute une méthode Document.getRecordsList() ?

    En fait le problème est peut être que tu veux reserialiser dans cette forme, c'est ça?

  3. #3
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Moi je marche à l'inverse je fais mon design objet, j'annote et je génère l'xsd correspondant avec schema-gen .. du coup peu importe la tronche de l'XML, je ne m'en occupe pas du tout.

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  4. #4
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    [petite digression]
    effectivement mais mon besoin est un petit peu différent puisque je dois m'adapter a un format XML fourni pour créer une xsd qui nous sert à déployer des facades web services au démarrage. En gros nous fournissons une xsd qui mappe leur xml, cette xsd est lu au démarrage et nous générons une facade xfire qui va pouvoir avaler leur xml sans aucun autre effort de développement. Le web service est générique, nous utilisons des annotations jaxb pour ajouter des informations qui sont exploitées par un plugin xjc lors de la désérialisation.



    [retour au sujet]
    un collègue vient de me fournir la solution avec la xsd. Sur l'objet de plus haut niveau il mappe une séquence d'objet RECORD qui sont un complexType composé d'une séquence de complexType et du coup j'ai bien ma liste de record en dessous de DOCUMENT et plus en dessous de RECORDS.

    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
     
    	<complexType name="DOCUMENT">
    		<sequence>
    			<element name="HEADER" type="trades:HEADERS"/>
    			<element name="RECORDS" type="trades:RECORD" maxOccurs="unbounded" minOccurs="0"/>
    		</sequence>
    	</complexType>
     
    	<complexType name="RECORD">
        	<sequence>
        		<element name="TRADE">
        			<complexType>
        				<sequence>
    						<element name="...." type="string"></element>
        				</sequence>
        			</complexType>
        		</element>
        	</sequence>
        </complexType>

  5. #5
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    ah finalement non, jaxb me crée des classes internes avec cette astuce donc je continue a avoir un niveau entre DOCUMENT et RECORD

    Je regarde du coté des customizations jaxb

    http://java.sun.com/webservices/docs...AXBUsing4.html

    Quelqu'un a l'expérience d'une annotation jaxb qui me permettrait de me passer de ces classes interne ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2011, 06h49
  2. [WD-2003] Supprimer paragraphes de niveau 2
    Par bakman dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/08/2011, 10h06
  3. Réponses: 3
    Dernier message: 05/08/2008, 16h03
  4. Réponses: 2
    Dernier message: 29/05/2008, 11h06
  5. Réponses: 9
    Dernier message: 12/01/2007, 18h53

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