Espace mémoire avec DOM - XML/XSL - Programmation
Marsh Posté le 07-08-2008 à 22:01:12
Bonjour, l'un charge complètement l'arbre XML l'autre non, assurément SAX utilisera moins de ressources, cela fait longtemps que je n'ai pas manipuler cela, mais si mais souvenirs sont c'est ça.
Marsh Posté le 07-08-2008 à 23:10:23
Le truc c'est que tu peux pas faire du xpath correctement sur du sax, faut tout charger donc DOM
Marsh Posté le 08-08-2008 à 09:26:59
Justement , c’est SAX qu’utilise moins de ressources par contre à DOM qui charge tout le fichier dans la mémoire sous forme d’un arbre. Mais je veux savoir si (par exemple) j’ai un fichier XML de 1 mo combien d’espace nécessaire (sur la RAM) pour le chargé ? et mercis beaucoup de votre réponse.
Marsh Posté le 08-08-2008 à 14:44:09
ça dépend trop de l'implémentation de DOM que tu utilises. Fais des tests. Encore une fois, avec SAX tu ne pourras pas faire du xpath correctement.
Marsh Posté le 08-08-2008 à 16:51:16
--------------------------------------------------------------
Taz : ça dépend trop de l'implémentation de DOM que tu utilises-
--------------------------------------------------------------
Ce que je sais en se que concerne DOM c’est que DOM charge le fichier xml dans la RAM sous forme d’un arbre, SVP donne moi une aidé sur les implémentation possible de DOM ?
Marsh Posté le 11-08-2008 à 14:50:36
si t'as un minimum de mémoire sur la plateforme target, à mon avis tu te pose pas la bonne question.
certes, c'est pas du C++ mais du C#, mais j'ai une application qui manipule des fichiers XML de 300 Mo et ça bouffe "à peine" 100 Mo à l'utilisation. alors même si ça change du simple au double, il ne devrait pas y avoir de problèmes, surtout si ton fichier ne fait que 1 Mo
Marsh Posté le 11-08-2008 à 15:36:06
Pendant le mois août, je suis en stage à une société de jeu et mon sujet c’est de créer en utilisant C++ un programme qui permet de traiter n’import quel fichier XML. Le problème c’est que le programme sera exécuté sur la console DS avec une RAM de 4MO d’où le contraint d’espace mémoire.
Pardon, mais est ce que vous pouvez me donnez la différence au niveau mémoire entre DOM et SAX pour traiter un fichier XML ?
Marsh Posté le 11-08-2008 à 15:55:10
Mais t'es pénible ! A toi de faire des essais !
Pis, SAX et DOM, ce sont deux utilisations très différentes. Si tu veux utiliser SAX juste pour gagner un peu de place en RAM, mais que ça ne convient pas du tout à ton projet, tu vas galérer, perdre du temps, et ce sera peut-être pas très optimisé !
Marsh Posté le 11-08-2008 à 16:30:40
tubi a écrit : est ce que vous pouvez me donnez la différence au niveau mémoire entre DOM et SAX pour traiter un fichier XML ? |
non
Marsh Posté le 26-08-2008 à 14:10:26
Toujours cet éternel débat entre SAX et DOM alors qu'ils n'ont "presque" rien à voir.
SAX : parseur XML, tout ce qu'il fait c'est parcourir (lire) le fichier XML et exécuter du code à la volée.
DOM : construit un arbre en mémoire représentant le fichier XML.
En tentant de faire une image (très approximative), je dirait que comparer SAX et DOM, c'est comme comparer un téléviseur et un magnétoscope :
- les 2 lisent le même signal en entrée
- le téléviseur ne fait que lire alors que le magnétoscope lit et enregistre
La question qu'il faut que tu te poses, c'est "Est ce que tu as vraiment besoin d'avoir toute la structure XML en mémoire à un moment donné ?"
Citation : mon sujet c’est de créer en utilisant C++ un programme qui permet de traiter n’import quel fichier XML. |
Tout dépend de ce que sont ces traitement.
EDIT : oups, j'avais pas vu les dates des messages (il a dû finir sont stage depuis)
Marsh Posté le 07-08-2008 à 11:23:52
Bonjours tout le monde .
Pour traiter un fichier xml en utilisant par exemple C++ on est devant 2 méthodes très impo soit DOM soit SAX .
je veux savoir qu'il est la limites ou bien comment varié l'espace mémoire nécessaire si j'utilise DOM ?
Merci d’avance.
Message édité par tubi le 07-08-2008 à 11:47:50