Bonjour,

J'ai un fichier XML volumineux décrivant quelques informations relatives à des villes dans plusieurs pays dans le monde. La structure du fichier XML est la suivante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<CityInfo>
 <country name="France">
  <city name="Paris">
    <info1> valeur 1 </info1>
    <info2> valeur 2 </info2>
  </city>
  </country>
</CityInfo>
Pour informations, le fichier fait 2 Mo.
En utilisant GTK+, mon but est de faire deux listes + un formulaire de modification. Dans ma première liste j'afficherai d'abord la liste des pays, en cliquant sur un pays la deuxième liste affiche ses villes, en cliquant par la suite sur la ville, un formulaire affiche les informations courantes sur la ville pour modification.

Mon objectif est de rendre l'affichage des villes puis des infos relatives à celles-ci le plus rapide possible et/ou en utilisant le moins d'espace mémoire.

Une solution simple serait de parcourir l'XML, en utilisant des Handlers faire des tests afin de retrouver l'information recherchée que ce soit l'affichage des villes d'un pays, ou l'affichage des infos d'une ville. Cependant il en découle une E/S avec une recherche séquentielle assez couteuse et redondante. Celà gène-t-il à votre avis ?
J'ai pensé à tout charger d'un seule coup dans une liste ou un arbre et faire la recherche en mémoire RAM plutot que sur le disque. Pour me simplifier l'implémentation je me demandais s'il existait une librairie qui ferait tout ce travail à ma place. En même temps, je me dis que pour la simplicité des requêtes que je vais faire, il n'est peut être pas très convenable de rajouter encore plus de dépendances à mon appli pour pas grand chose.

Je ne sais donc pas quelle solution prendre ?
Expat + parcours du fichier XML à chaque clic.
Expat + chargement du contenu dans un arbre + Requêtes sur l'arbre.
Autre solution ?