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 :

générer un fichier xml à partir d'un gros fichier plat


Sujet :

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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 28
    Points : 16
    Points
    16
    Par défaut générer un fichier xml à partir d'un gros fichier plat
    Bonjour,

    je developpe une application en JAVA et je dois générer un fichier XML à partir d'un fichier plat qui peut atteindre 200Mo.
    et je ne sais pas comment je peux le faire sans exploser la mémoire.

    est ce que quelqu'un a une idée pour faire ça svp?

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    Fais un petit tour dans la faq, tu trouveras des infos sur les api permettantde manipuler du DOM.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    j'en ai fai un truc du genre:

    je crée mon document
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    try {
                //get an instance of builder
                DocumentBuilder db = dbf.newDocumentBuilder();
     
                //create an instance of DOM
                dom = db.newDocument();
     
     }
    je remplie mon document au fur et à mesure que ke lit mon fichier plat et tout à la fin que je sérialize mon fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     OutputFormat format = new OutputFormat(dom);
      format.setIndenting(true);
       XMLSerializer serializer = new XMLSerializer(new FileOutputStream(
                        new File("result.xml")), format);
      serializer.serialize(dom);
    mais ça marche pas la mémoire explose.

  4. #4
    Membre actif Avatar de coco62
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 237
    Points : 278
    Points
    278
    Par défaut
    Si cela ne passe pas, tu peux si le fonctionnel le permet faire un split de ton fichier à plat , les traiter puis regrouper les flux XML.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Je te propose d'ouvrir ton gros fichier avec un FileInputStream et pour chaque ligne ajouter "<ligne number="+nbline+">" au debut de la ligne et "</ligne>" à la fin.
    Puis d'écrire au fur et à mesure dans un FileOutputStream le résultat.
    Faudra penser a gérer l'ajout de l'entête xml et le noeud xml racine dans le FileOutputStream.
    Je l'ai déja fait pour de gros fichier, ça marche bien.
    Après on peut manipuler le gros xml avec SAX.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    je vais essayé de faire comme t as dit Morbo.

    En effet je dois le faire dans les deux sens construire un fichier xml à partir d'un fichier plat et construire un fichier plat à partir d'un fichier xml.

    dans le permier sens j'utilise Xerces et sax et ça marche sans problème.

    dans l'autre sens je vais faire avec un FileInputStream.
    j'ai une petite question:
    lorsque j'ecrie dans le FileInputStream, est ce qu'il écrie le flux dans la mémoire et tout à la fin qui le met on dur, ou il l'écrit directement en dur?

    Merci on tout cas

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Il faut ecrire dans le FileOutputStream (donc sur le dur) au fur et à mesure qu'on parcours le FileInputStream (ligne à ligne).
    Donc le programme n'a en mémoire qu'une ligne à la fois.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    OK merci bcp.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/02/2012, 18h30
  2. [DOM] Reconstruire un fichier XML à partir d'un autre fichier XML
    Par Jonvols dans le forum Format d'échange (XML, JSON...)
    Réponses: 12
    Dernier message: 13/11/2010, 01h49
  3. Réponses: 5
    Dernier message: 23/03/2009, 16h36
  4. [XSLT] generer un fichier xml optmise d'un autre fichier xml
    Par maguie dans le forum XSL/XSLT/XPATH
    Réponses: 22
    Dernier message: 08/04/2008, 15h45
  5. Réponses: 2
    Dernier message: 27/05/2004, 00h40

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