Vous voudrez peut-être regarder xmlTextReader "streaming" interface de libxml2.
Il s'agit d'un curseur qui avance les données d'entrée qu'il a déjà traitées et qui ne génère pas de gros DOM intensif en mémoire lorsqu'il avance. Les requêtes XPath peuvent toujours être utilisées, avec la limitation selon laquelle les sous-arbres doivent être développés (c'est-à-dire, copiés dans des structures libxml en mémoire) pour les parties du document à rechercher. L'interface xmlTextReader est beaucoup plus fastidieuse que de simplement lancer quelques requêtes XPath sur l'élément racine, mais pour un document de cette taille, sur un périphérique dont la mémoire est limitée, il peut être votre meilleur choix.
Je viens de terminer une conversion en xmlTextReader pour des raisons similaires, et la mémoire utilisée lors du traitement XML est identique pour un document de 20 Ko et 30 Mo.
Nous avons d'abord eu NSXMLParser mais cet analyseur est un moyen de ralentir pour une telle quantité de données ... – Markus
êtes-vous sûr que le problème est un problème de mémoire? –
Je le pense, Si je le lance dans Instruments, l'allocation de Live Bytes monte rapidement à 28,61 Mo puis se casse soudainement! Lorsque vous consultez le journal des périphériques, le type de rapport est: Mémoire faible – Markus