Parser un fichier XML de 1 giga... - Java - Programmation
Marsh Posté le 27-08-2004 à 13:36:40
JeFFreYY a écrit : Hello tlm |
decoupe ton fichier ?
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
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 ?
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à...
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. 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.
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 ?
ohyes a écrit : |
ohyes a écrit : |
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 : |
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
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 [/citation]
oui évidemment je parlais pas du parseur en lui même mais de la Factory à construire au dessus du parseur.
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. |
quelle factory ? le handle tu veux dire ? Ca ca dépend vraiment de ce que tu en fait de ton fichier XML
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 !
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+,
Marsh Posté le 30-08-2004 à 12:51:36
Reply
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