Parser un fichier XML de 1 giga...

Parser un fichier XML de 1 giga... - Java - Programmation

Marsh Posté le 27-08-2004 à 11:11:34    

Hello tlm :)
 
J'ai le bonheur de devoir parser un fichier XML de 1 giga, c'est la fête :)
Au début du "projet", la taille des fichiers ne devait pas dépasser 10 Mb, j'ai donc décidé d'utiliser JAXB vu la complexité du schéma, ça fonctionnait à merveille :)
 
Aujourd'hui, la taille des fichiers est passée a 1 giga ! et bien sur j'ai qq ptits problemes de OutOfMemory Exception :)
 
Qq1 aurait-il une solution, un example pour parser un tel fichier sachant kil m'est impossible de tout réécrire avec SAX ...
 
Dank u :)

Reply

Marsh Posté le 27-08-2004 à 11:11:34   

Reply

Marsh Posté le 27-08-2004 à 13:36:40    

JeFFreYY a écrit :

Hello tlm :)
 
J'ai le bonheur de devoir parser un fichier XML de 1 giga, c'est la fête :)
Au début du "projet", la taille des fichiers ne devait pas dépasser 10 Mb, j'ai donc décidé d'utiliser JAXB vu la complexité du schéma, ça fonctionnait à merveille :)
 
Aujourd'hui, la taille des fichiers est passée a 1 giga ! et bien sur j'ai qq ptits problemes de OutOfMemory Exception :)
 
Qq1 aurait-il une solution, un example pour parser un tel fichier sachant kil m'est impossible de tout réécrire avec SAX ...
 
Dank u :)


 
decoupe ton fichier ?

Reply

Marsh Posté le 27-08-2004 à 13:42:39    

il ne faut pas utiliser JAXB mais l'autre méthode (je trouve plus son nom) qui ne mets pas en mémoire tout le fichier mais le lis séquentiellement

Reply

Marsh Posté le 27-08-2004 à 13:43:17    

Reply

Marsh Posté le 27-08-2004 à 13:44:29    

heuh un xml de 1Go, est ce bien raisonable ?  
t'as essayé de l'ouvrir dans notepad, pour voir ? [:boidleau]

Reply

Marsh Posté le 27-08-2004 à 13:45:54    

oublie. il va vouloir te demander de l'ouvrir avec Wordpad à partir de quelques Mo déjà...

Reply

Marsh Posté le 27-08-2004 à 13:54:28    

le seul util qui t'ouvrira efficacement ce fichier est UltraEdit.
Ca m'arrive d'ouvrir des binaires de cette taille avec.
 
Par contre de toute evidence tu dois tout réécrire avec SAX.
Et l'excuse oui au début ca faisait que 10Mo n'en est pas une.  :non: Car on choisit pas SAX ou DOM selon la taille du fichier mais plutot selon l'utilisation.
 
Un parseur Sax, c'est vite fait en plus.

Reply

Marsh Posté le 27-08-2004 à 15:11:35    

ohyes a écrit :

le seul util qui t'ouvrira efficacement ce fichier est UltraEdit.


et emacs alors ? :o
 

ohyes a écrit :


Par contre de toute evidence tu dois tout réécrire avec SAX.


[:benou_+1]
 

ohyes a écrit :


Et l'excuse oui au début ca faisait que 10Mo n'en est pas une.  :non: Car on choisit pas SAX ou DOM selon la taille du fichier mais plutot selon l'utilisation.


heu nan pas forcément ... le parsing sax faut se le farcir, c'est plutot chiant dans la majorité des cas, alors qu'avec du Dom et des XPATH ca va tout seul !
 
Mais bon, déjà avec des fichiers de 10Mo, j'aurais vraiment BEAUCOUP hésité à partir sur du DOM ou autre système qui reconstruit tout le fichier xml en mémoire.
 

ohyes a écrit :


Un parseur Sax, c'est vite fait en plus.


pkoi le "faire" ?  y en a déjà plein de tous fait.  
 
c'est de base dans le JDK1.4, et sinon y a xerces [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 27-08-2004 à 15:17:04    

[citation=834241,0,8]
pkoi le "faire" ?  y en a déjà plein de tous fait.  
 
c'est de base dans le JDK1.4, et sinon y a xerces [:spamafote][/citation]
 
oui évidemment je parlais pas du parseur en lui même mais de la Factory à construire au dessus du parseur.  :ange:

Reply

Marsh Posté le 27-08-2004 à 15:26:08    

ohyes a écrit :

oui évidemment je parlais pas du parseur en lui même mais de la Factory à construire au dessus du parseur.  :ange:


quelle factory ? le handle tu veux dire ? Ca ca dépend vraiment de ce que tu en fait de ton fichier XML :/


Message édité par benou le 27-08-2004 à 15:26:34

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 27-08-2004 à 15:26:08   

Reply

Marsh Posté le 30-08-2004 à 10:46:16    

Yep,
 
Un fichier de 10méga avec JAXB ne pose aucun problème, 3 minutes de parsing, mémoire peu utilisée, non vraiment, JAXB fonctionne parfaitement pour des fichiers de cette taille.
Et le parsing a la main avec les startElement et EndElement, j'en ai pour pas mal de temps à implémenter tellement la structure du schéma est complexe... Temps que je n'avais pas dés le début :)
J'ai trouvé dans JAXB un moyen de parser une partie du fichier seulement, ce qui me permettrait d'extraire partie par partie, étant donné que j'ai besoin de l'entiereté du fichier. Mais je gagnerais surement bcp de mémoire :)
Si qq1 a déja implémenté cela :)
Merci pour vos réponses !

Reply

Marsh Posté le 30-08-2004 à 11:25:29    

Cherches du cote de expat (programme en C qui devrait pouvoir parser des gigas de XML les doigts dans le nez). Il y a peut etre un wrapper pour java (ou alors a toi de l'ecrire :) )  
Sinon, regardes ici: http://www.extreme.indiana.edu/xgws/xsoap/xpp/mxp1/ et ici: http://kobjects.org/auto?self=$c0a [...] f5ad6a6fb3
Ce sont des parsers a faible occupation memoire, puisque prevus pour tourner dans un environnement avec peu de ressources.
 
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 30-08-2004 à 12:51:36    

j'allais le dire, xpp3 :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed