XmlDocument + memoire insuffisante

Signaler
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
-
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
-
Bonjour à tous,

Je rencontre un souci pour générer un fichier XML au boulot à l'aide du composant XmlDocument.

Cela fonctionne quand il n'y a pas trop de données, mais parfois, je récupère énormément d'enregistrements dans la base au point que 2 Go de ram sont bouffés par mon application. Et arrivé à un certain stade, j'obtiens le message d'erreur : "Memoire insuffisante".

Je souhaiterai donc enregistrer sur le disque plusieurs fois au cours de la génération XML les données afin d'utiliser moins de RAM mais je ne sais pas comment m'y prendre !

Quelqu'un pourrait m'aider ?

3 réponses

Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bonjour

Il faut savoir que le XMLDocument crée une réprésentation en mémoire du fichier XML (par l'appel de la fonction load), c'est à dire que la taille utilisée peut être beaucoup plus grande que celle nécessaire pour stocker la totalité du fichier en mémoire. Pour cette raison, il est préférable de ne pas utiliser ce composant pour des fichiers XML de très grande taille.

Cordialement. <hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
174
Date d'inscription
vendredi 26 mai 2006
Statut
Membre
Dernière intervention
9 avril 2014
5
Que puis-je utiliser d'autre alors ?
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Tu peux regarder, par exemple, du côté de XMLReader, XMLWriter (pas de chargement de l'ensemble du fichier XML en mémoire) Il te faudra alors revoir la façon de gérer tes XML...

P.S. Il existe de nombreux parser XML pour Delphi, certains gratuits, d'autres non (tout dépend de ton budget et niveau) facilement trouvable sous Google.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein