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 :

Gestion "gros fichiers" [JDOM]


Sujet :

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

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 27
    Points : 21
    Points
    21
    Par défaut Gestion "gros fichiers"
    Bonjour,

    Je suis devant un "léger" problème...

    J'ai proposé plusieurs méthodes pour transformer du XML -> format propriètaire (du texte).

    Soit utilisation XSL soit directement en java...

    En terme de rapidité XSL est bcp plus lent (du simple au double) mais en therme de mémoire... rien à faire... pour un document de 40Mo ca tombe out of memory (j'utilise JDOM).

    Voici une des méthodes proposer :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import java.io.IOException;
     
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;
     
    import org.xml.sax.SAXException;
     
    public class TestCharge4 {
    	public static void main(String[] args)
    		throws
    			TransformerException,
    			TransformerConfigurationException,
    			SAXException,
    			IOException {
     
    		TransformerFactory tFactory = TransformerFactory.newInstance();
    		Transformer transformer =
    			tFactory.newTransformer(new StreamSource("test.xsl"));
     
    		transformer.transform(
    			new StreamSource("test.xml"),
    			new StreamResult("TestCharge4.txt"));
    	}
    }
    Des suggestions ?

    J'ai tenté d'augmenter la JVM mais toujours planté...

    Qui arrive à gérer de "gros" document ??

    Haaz
    Le problème se situe souvent entre la chaise et l'écran.

  2. #2
    Membre du Club Avatar de philemon_siclone
    Inscrit en
    Septembre 2003
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Je me suis posé exactement la même question pour l'appli que je suis en train de developper et la seule solution que j'ai trouvée c'est d'utiliser ce bon vieux SAX (bon, OK, c'est pas l'idée du siècle... ).

    ++

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    C'est ce que je suis en trian de faire mais comment tu fait quand tu veux récupérer des infos dans les noeuds frères ou pères ??? à part avoir des variables masi bon... pas super pour maintenir le code...

    Haaz
    Le problème se situe souvent entre la chaise et l'écran.

  4. #4
    Membre du Club Avatar de philemon_siclone
    Inscrit en
    Septembre 2003
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Je pense (j'espère) que ce que j'ai fait était un peu plus propre que simplement mettre les infos déjà rencontrées dans des variables. Mais ça peut être tout à fait valable si les traitements ne sont pas trop complexes. De toute façon, on en sort pas, il te faut un moyen de stocker l'état courant du parsage (avec eventuellement un historique des elements déjà rencontrés (mais pas tous, évidemment, sinon ça revient à reprogrammer DOM )).

    De mon coté j'avais une classe EtatCourant et quelques classes pour les elements parents. Mais peut-être que dans ton cas une solution plus légère est préférable (je ne sais pas).

    ++

    PS : désolé, j'ai l'impression de sortir que des évidences, et de ne pas trop t'aider

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Sisisisi disons que j'était un peu content de ce que j'avias fait et j'ai du mal à me retourner verts du Sax

    Merci de ton aide

    Haaz
    Le problème se situe souvent entre la chaise et l'écran.

  6. #6
    Membre du Club Avatar de philemon_siclone
    Inscrit en
    Septembre 2003
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Sinon, t'as entendu parler d'un truc qui s'appelle "deferredDom"? Si j'ai bien compris (je n'ai lu qu'un cours paragraphe la-dessus) ça permettrait de ne pas mettre l'arbre DOM entièrement en mémoire mais de le charger "à la demande" (i.e. seule une partie de l'arbre est en mémoire).

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Non mais dés que j'ai fini de refaire tout mon boulot avec SAX (quelle prise de tete ... tu as toi aussi 50 .compareTo dans ton code pour t'en sortir ????) j'irais voir ca !!!!

    Pourquoi on a pas des PCs avec 500 milliard de mémoire ??? comme ca hop DOM et voila...

    Haaz

    EDIT : bon a 40 Mo avec Sax ca passe... je vais tenter de voir si j'arrive à passer quand meme avec JDOM...
    Le problème se situe souvent entre la chaise et l'écran.

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    oula qu'est ce que tu fait avec un fichier de 40 Mo à transformer ? c'est pas courant !

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Bah 40 Mo c'est pour le test ... sur serveur ca sera plus gros je crois...

    Gesion de fichier XML dans l'administration mais on n'est pas encore sur des tailles de fichiers.

    Haaz
    Le problème se situe souvent entre la chaise et l'écran.

  10. #10
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Voila que je suis inquiet...
    Je risque d'avoir a verifier la grammaire sur un fichier de plus d'un Giga...

    Ne me dites pas que je suis mal

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Tu raye tout ce qui approche de DOM de ton vocabulaire et tu te plonges dans SAX & compagnie

    Tient nous au courant j'ai les memes problèmatiques donc si on trouve une solution ca aidera au moins 2 personnes

    Haaz
    Le problème se situe souvent entre la chaise et l'écran.

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

Discussions similaires

  1. gestion de gros fichiers en C++
    Par buzzkaido dans le forum C++
    Réponses: 6
    Dernier message: 07/08/2012, 12h16
  2. Gestion de gros fichiers
    Par bpy1401 dans le forum Android
    Réponses: 10
    Dernier message: 03/07/2012, 13h40
  3. Gestion des (gros) fichiers
    Par schneed dans le forum C++Builder
    Réponses: 1
    Dernier message: 23/02/2009, 20h05
  4. [Composants texte] Gestion de gros fichiers
    Par sozie9372 dans le forum Interfaces Graphiques en Java
    Réponses: 8
    Dernier message: 22/05/2006, 11h03

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