2011-10-02 6 views
3

J'essaye d'analyser un gros fichier dans android.La taille du fichier xml dépasse 2Mb. Je suis en utilisant ce code:Analyser un fichier volumineux - OutOfMemory - Android

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = factory.newDocumentBuilder(); 
InputSource inStream = new InputSource(); 
inStream.setCharacterStream(new StringReader(XMLResponse)); 
Document doc = db.parse(inStream); 

J'ai eu une erreur OutOfMemory et je ne sais pas comment résoudre ce problème! Je travaille sur un appareil à arc Xperia!

Répondre

1

L'analyse d'un fichier XML à l'aide d'une arborescence DOM nécessite beaucoup de mémoire car l'analyseur doit conserver beaucoup d'informations sur votre fichier. J'ai fait quelques expériences avec des arbres DOM il y a quelques temps, et j'ai trouvé que l'analyse d'un fichier de taille n nécessite 7n d'espace mémoire.

Vous pouvez essayer de réduire l'empreinte mémoire de votre programme en supprimant l'analyseur DOM et en utilisant un analyseur SAX à la place. Les psrsers SAX sont fondamentalement différents et nécessitent beaucoup moins de mémoire lors de l'exécution.

1

Si le document est grand, mieux vaut utiliser XMLReader si vous le pouvez, de cette façon vous n'avez pas besoin de stocker tout le document en mémoire à la fois. Habituellement, cela me sauverait dans le passé car vous avez rarement besoin de tout le xml. Plus fréquemment, il vous suffit de récupérer des chaînes de contenu et des attributs du document, ce qui économise beaucoup de mémoire. Vous venez de parcourir le document et de le jeter tout en conservant toutes les choses utiles.

Questions connexes