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 :

Passer d'objet java en fichier XML? [SAX]


Sujet :

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

  1. #1
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut Passer d'objet java en fichier XML?
    Bonjour,

    voilà j'utilise actuellement SAX pour me générer mes objets java à partir d'un fichier XML. Et ca marche nickel.
    J'aimerais dés lors enregistrer des objets java sous format XML voir ajouter ces objets dans un fichier XML Mais je ne sais pas la méthode à suivre et la moins couteuse en mémoire à utiliser.... utiliser SAX? comment?

    Meilleurs voeux,
    Cordialement,

    Gaëtan
    http://www.stop-monsanto.qsdf.org/

  2. #2
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Pour cela, tu devrais plutot te mettre à JDom, c'est beaucoup plus pratique.
    Tu trouveras toutes les info nécessaires sur dev.com
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  3. #3
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    J'utilisais JDOM juste avant, mais mon traitement suscite beaucoup de mémoire et au bout d'un moment c'est OutOfMemory. Je suis donc passé a SAX pour le parsing XML -> JAVA et là tout va bien maintenant. Maintenant j'aimerais faire l'inverse mais toujours avec SAX pour voir si c'est plus léger.
    http://www.stop-monsanto.qsdf.org/

  4. #4
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Ca peut effectivement etre plus léger. c'est juste plus complexe à écrire...
    Tu ouvres un fichier et tu ecris dedans et voila tout.
    Tu peux t'aider de classes de org.xml.sax.helpers comme AttributesImpl
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  5. #5
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Ca peut effectivement etre plus léger. c'est juste plus complexe à écrire...
    Tu ouvres un fichier et tu ecris dedans et voila tout.
    Tu peux t'aider de classes de org.xml.sax.helpers comme AttributesImpl
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  6. #6
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Ca peut effectivement etre plus léger. c'est juste plus complexe à écrire...
    Tu ouvres un fichier et tu ecris dedans et voila tout.
    Tu peux t'aider de classes de org.xml.sax.helpers comme AttributesImpl
    Et sinon :
    http://java.developpez.com/faq/java/...lt#creerXmlSax
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  7. #7
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Y'a pas plus simple que cet exemple ?
    http://www.stop-monsanto.qsdf.org/

  8. #8
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Points : 445
    Points
    445
    Par défaut
    Citation Envoyé par viena
    Tu ouvres un fichier et tu ecris dedans et voila tout.
    Oui, j'ai déjà écrit une appli qui me génerait un fichier XML, et il a fallu que je me tape toutes les balises à inserer en "texte".
    Il existe peut-être une classe déjà écrite qui facilite la création d'un XML, mais je ne la connait pas.
    L'interêt du doute est que cela fait avancer.
    (parenthèses)Je suis à la recherche d'un emploi sur Valence(26) et ses environs.
    mon cv:
    http://charegis.netcv.org/

  9. #9
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    si c'est des beans, y'a un truc dans le jdk pour les serialiser en xml je crois

    http://www.javaalmanac.com/egs/java.beans/WriteXml.html

  10. #10
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Jvais me lancer dans l'exemple de SAX dans la FAQ et je vais voir ce que ça donne.
    http://www.stop-monsanto.qsdf.org/

  11. #11
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Je remarque qu'il faut lorsque l'on implémente XMLReader selon l'exemple de la FAQ il faut implémenter une bonne dizaine de méthodes. C'est pas très pratique... Qqun aurait une autre solution?
    http://www.stop-monsanto.qsdf.org/

  12. #12
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    Citation Envoyé par spoutyoyo
    Je remarque qu'il faut lorsque l'on implémente XMLReader selon l'exemple de la FAQ il faut implémenter une bonne dizaine de méthodes. C'est pas très pratique... Qqun aurait une autre solution?
    en general, tu as une classe en dessous qu'il suffit d'etendre, et celle-ci implemente tout... plus qu'a surcharger le necessaire

    va jeter un oeil sur la partie xml -> sax du totoriel jmd à partir de la page des cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/

  13. #13
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Il n'y a pas de sous classes qui héritent de XMLReader et qui correspond à ce que je veux faire.
    Je me suis dirigé par une méthode toute simple qui utilise les flux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.io.PrintWriter fichier = new java.io.PrintWriter( new java.io.FileWriter("C:/fichier.xml"));
    fichier.println("<?xml version=\"1.0\" encoding="UTF-8"?>");
    fichier.println("<root>");
    .....

    Le problème est que lorsque SAX parse le fichier pour lire, il me fait une exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.io.UTFDataFormatException: Invalid byte 2 of 3-byte UTF-8 sequence.
    comment pourrais-je pallier à ce problème?
    http://www.stop-monsanto.qsdf.org/

  14. #14
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Je viens de tomber sur un site qui utilise SAX pour transformer un fichier en un fichier XML

    http://www.rgagnon.com/javadetails/java-0482.html

    Je me suis donc inspiré de ça pour mon application.
    Résultat : la création du fichier est rapide, pas d'OutOfMemory, donc cool.
    Un problème qui m'inquiète est que la taille du fichier généré est plus grand de 600 ko (8500Ko on passe à 9100Ko), donc faut que je vérifie si l'enregistrement est nickel chrome.
    http://www.stop-monsanto.qsdf.org/

  15. #15
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Le problème vient que cette méthode ajoute 2 espaces en plus lors de la tabulation d'une balise. Donc sur plus de 350000 balises, c'est normal que l'on a qql 100 de Ko en plus

    Merci à tous.
    http://www.stop-monsanto.qsdf.org/

  16. #16
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    C'est marrant, cette méthode ressemble beaucoup à celle que j'utilise et dont je t'avais parlé... elle utilise les classes de org.xml.sax.helpers
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Objet dans un fichier XML
    Par remsrock dans le forum C#
    Réponses: 5
    Dernier message: 21/08/2008, 18h40
  2. Passer des objets Java en paramètre
    Par ruby_robber dans le forum BIRT
    Réponses: 3
    Dernier message: 23/06/2008, 12h30
  3. Réponses: 7
    Dernier message: 14/05/2008, 21h50
  4. [java]Encodage fichier XML avec XMLType
    Par adrien.nicolet dans le forum Oracle
    Réponses: 1
    Dernier message: 08/03/2007, 13h09
  5. faire correspondre un objet a un fichier xml
    Par david06600 dans le forum Langage
    Réponses: 1
    Dernier message: 15/08/2006, 14h38

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