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 :

Fichier XML trop gros [JDOM]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Par défaut Fichier XML trop gros
    Bonjour,

    Voilà j'ai un petit pb, j'essaie de parser un fichier xml apparemment trop volumineux (+ de 4Mo) car j'ai systématiquement une erreur du type :
    java.lang.OutOfMemoryError: Java heap space
    En effet lorsque je traite des fichiers de taille plus petite je n'ai pas de problème.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static Element parseXml(InputStream in) {
            SAXBuilder sxb = new SAXBuilder();
            Document document = new Document();
            try {
                document = sxb.build(in);
            } catch(Exception e){
                e.printStackTrace();
            }
            racine = document.getRootElement();
            return racine;
        }
    Est-ce qu'il y a un moyen de ne pas parser un fichier xml en entier mais noeud par noeud par exemple ?
    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Pas avec JDom...

    En revanche, on peut augmenter la mémoire allouée à la JVM.

    Si le fichier XML à parser est vraiment gros, il est recommandé de ne pas utiliser les parsers de type DOM mais plutôt ceux de type SAX.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre confirmé Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Par défaut
    Bonjour CyberChouan,

    C'est bien ce qu'il me semblait aussi... Du coup j'ai une autre question, est-ce qu'en utilisant SAX récupérer une partie de mon fichier xml pour en créer un autre. En fait je dois récupérer les données d'un certain nombre de fichiers pour en faire plus qu'un (suite sujet hier...)
    Je suis désolé pour ces questions mais c'est vrai que je débute dans le domaine xml...
    Merci d'avance pour ta réponse.

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Finalement, si je reprends ce qui s'est dit hier... tu ne fais aucune modification sur tes fichiers XML, et tu te contentes de regrouper ces fichiers sous une "super-racine" d'un nouveau fichier XML.

    Dans ce cas, pourquoi t'embêter à parser les fichiers?
    Tu peux t'en sortir en utilisant uniquement les classes de gestion I/O de java:

    - tu développes une méthode qui lis ton fichier XML comme n'importe quel fichier texte, à partir de sa racine (en supprimant l'entête <?xml ... ?><DOCTYPE ...>)

    - tu crées un fichier en écrivant son entête, et la racine

    - tu copies brutalement le contenu de tous les fichiers xml lus (cf. première méthode) à la suite

    - tu fermes ta balise principale
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  5. #5
    Membre confirmé Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Par défaut
    C'est exactement çà, t'as tout compris
    Je vais essayé de faire comme tu dis ça me semble une bonne solution.
    Bon maintenant ya plus qu'à !!!

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

Discussions similaires

  1. [Excel 2003] Taille fichier Excel trop gros
    Par damsmut dans le forum Excel
    Réponses: 10
    Dernier message: 17/03/2011, 09h27
  2. XML trop gros en mémoire : un moyen d'alléger ?
    Par rednik dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/09/2008, 18h06
  3. impossible d'utiliser un xml trop gros
    Par lizard2k3 dans le forum Flex
    Réponses: 2
    Dernier message: 13/08/2008, 13h11
  4. [xml][asp_vbscript] Taille de fichier XML trop grande...
    Par nicko5959 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 06/03/2006, 11h50
  5. Fichier texte trop gros pour etre ouvert
    Par tavman dans le forum C++
    Réponses: 5
    Dernier message: 05/10/2005, 00h07

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