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 :

Sérialisation XML : XStream et Dom4J


Sujet :

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

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut Sérialisation XML : XStream et Dom4J
    Bonjour
    J'ai besoin de sérialiser des objets en xml.
    J'utilise XStream qui fonctionne et me sort de très belles chaines XML.
    Seulement j'ai besoin d'obtenir un Document ou Element Dom4J.
    Je pourrais bien sûr parser la chaine pour l'obtenir mais ce serait lourd.
    On doit pouvoir obtenir directement un document puisque des drivers sont prévus pour les api xml existantes.
    J'ai fait un test, mais non-concluant car je ne sais pas comment cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		DocumentFactory docFac = new DocumentFactory();
    		Dom4JDriver driver = new Dom4JDriver(docFac, OutputFormat.createCompactFormat());
    		XStream xstream = new XStream(driver);
    		Dom4JWriter writer = new Dom4JWriter(docFac);
    		xstream.marshal(obj, writer);
    		return docFac.createDocument();
    Merci de m'éclairer

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Attends... Tu as besoin de sérialiser des objets en XML, ou tu as besoin d'avoir un document Dom4J ?

    C'est pas la même chose !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Attends... Tu as besoin de sérialiser des objets en XML, ou tu as besoin d'avoir un document Dom4J ?

    C'est pas la même chose !
    Dom4J c'est jamais qu'un outil pour manipuler du XML.
    J'ai besoin de sérialiser des objets, c'est à dire de leur donner la forme XML comme le propose XStream, mais je doit ensuite manipuler les donnés et pour cela il me faut le format Dom4J.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    C'est un cas un peu étrange. Tu as des données, que tu veux sérialiser en XML, et ensuite tu veux modifier le XML généré... ?

    Normalement on sérialise le XML directement sous la forme qu'on veut qu'il ait au final, tu sais. Quelque chose t'en empêche ?
    En tout cas, il serait assez normal que rien ne soit prévu pour faire comme ça. J'ai bien peur que l'approche sérialiser, puis parser, soit la plus pragmatique si tu as vraiment besoin de faire ça dans cet ordre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Pour l'instant cela fonctionne comme ça, mais c'est du (micro) temps de perdu que de créer la chaîne pour ensuite la parser.
    En fait, ce n'est pas pour modifier les objets, c'est bien pour ensuite les désérialiser à l'identique, simplement il vont être envoyés au travers d'un flux XMPP et les données requises par la lib de connexion sont des "Element" Dom4J et non directement des chaînes.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Dans ce cas, c'est l'inverse : à quoi sert XStream ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Dans ce cas, c'est l'inverse : à quoi sert XStream ?
    Comment ça l'inverse ?
    XStream sert à convertir un objet java en une chaine XML et l'inverse.

    XStream supporte des "drivers" pour utiliser différentes bibliothèques tel que JDom ou Dom4J, c'est pour ça que je pense que l'on peut récupérer un Element JDom ou Dom4J à un moment donné, avant la conversion en chaine.

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    À quoi ça sert de transformer un objet Java en chaîne XML, alors que toi tu veux un objet qui peut être passé dans un flux XMPP, comme par exemple un objet DOM4J ?

    XStream supporte des "drivers" pour utiliser différentes bibliothèques tel que JDom ou Dom4J, c'est pour ça que je pense que l'on peut récupérer un Element JDom ou Dom4J à un moment donné, avant la conversion en chaine.
    Possible. Je connais pas XStream et pas beaucoup DOM4J. Les sérialiseurs posent en général plus de problèmes qu'ils n'apportent de solution, et je préfère JDOM.

    Je me contente de poser un regard critique sur la méthode employée. Objet => XML => DOM => flux...
    ... Quoi ?!?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Citation Envoyé par thelvin Voir le message
    À quoi ça sert de transformer un objet Java en chaîne XML, alors que toi tu veux un objet qui peut être passé dans un flux XMPP, comme par exemple un objet DOM4J ?
    ça sert à passer toute sorte d'objets très simplement, sans créer d'Element XML pour chaque.
    S'il existe un convertisseur Objet en Element Dom4J je suis preneur.

    Citation Envoyé par thelvin Voir le message
    Possible. Je connais pas XStream et pas beaucoup DOM4J. Les sérialiseurs posent en général plus de problèmes qu'ils n'apportent de solution, et je préfère JDOM.
    J'utilise souvent JDom aussi, mais la lib XMPP utilise Dom4J, donc...
    Et puis la sérialisation XML, pourquoi pas, tu regarde XStream, ça sort du XML simple comme bonjour, c'est parfait pour ce que j'en fait.

    Citation Envoyé par thelvin Voir le message
    Je me contente de poser un regard critique sur la méthode employée. Objet => XML => DOM => flux...
    ... Quoi ?!?
    C'est simplement ça:
    Objet => chaine XML => Dom4J => XMPP => Dom4J => chaine XML => Objet
    La boucle est bouclée, ça marche, mais j'aimerais :
    Objet => Dom4J => XMPP => Dom4J => Objet
    C'est pour passer des objets d'un client à un serveur et inversement.
    C'est une solution pratique je trouve, c'est dommage que la lib de sérialisation ne soit faite que pour une sortie en chaine.
    Il existe peut-être une autre lib de sérialisation XML qui conviendrait... :-/

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    xstream est conçu pour travailler sur des flux. les drivers ne servent qu'à te permettre d'utiliser l'api java de ton application plutot que d'en imposer une precise.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    xstream est conçu pour travailler sur des flux. les drivers ne servent qu'à te permettre d'utiliser l'api java de ton application plutot que d'en imposer une precise.
    Je vois, il n'y a donc aucun moyen de récupérer ce don j'ai besoin ?

Discussions similaires

  1. Sérialisation xml : fichier xml vide
    Par casafa dans le forum C#
    Réponses: 1
    Dernier message: 25/04/2007, 15h13
  2. [C# 2.0] Sérialisation XML avec PCDATA
    Par stailer dans le forum C#
    Réponses: 2
    Dernier message: 07/01/2007, 22h52
  3. Réponses: 3
    Dernier message: 18/05/2006, 23h55
  4. Problème sérialisation XML [C#]
    Par AlphonseBrown dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/04/2006, 22h58
  5. [VB.NET] Sérialisation XML de Collections
    Par nico-pyright(c) dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/12/2004, 15h28

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