Bonjour � tous,

Je suis en train de d�velopper (pour un stage) une application web qui utilise des donn�es contenues dans un fichier XML de la forme (version simplifi�e) :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
 
<reservations>
<reservation id="1">
<date>25/08/2009</date>
<ville>Paris</ville>
</reservation>
...
<reservation id="246">
<date>29/08/2009</date>
<ville>Toulouse</ville>
</reservation>
</reservations>
Dans mon code Javascript, je dois acc�der plusieurs fois aux valeurs contenus dans ce fichier pour afficher les r�servations (en SVG).

Ma premi�re id�e (la plus courte � �crire ) a �t� de stocker tous les noeuds utiles dans des tableaux avec le code suivant :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
 
var dateTab = xmlDocument.getElementsByTagName("date");
var villeTab = xmlDocument.getElementsByTagName("ville");
Etant donn� qu'� chaque fois je tra�te toutes les r�servations avec une boucle :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
 
var nbReservations = xmlDocument.getElementsByTagName("reservation").length;
for(var i=0; i<nbReservations; i++) {...
je peux r�cup�rer toutes les donn�es d'une r�servation en acc�dant directement aux tableaux :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
dateTab[i] et villeTab[i]
Dans le code complet, le noeud <reservation> a une vingtaine de fils, et le fichier peut contenir de 20 � 2000 (cas extr�me) noeuds <reservation>.

Ma m�thode fonctionne, mais il doit y s�rement avoir des solutions plus efficaces, notamment lorsque le nombre de noeuds est tr�s �lev�.

Les 2 autres solutions auxquelles j'ai pens� sont :

1) Stocker uniquement la liste des id et � chaque fois que j'ai besoin des donn�es, je fais :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
 
var reservation = xmlDocument.getElementById(idTab[i]);
var date = reservation.firstChild;
var ville = reservation.firstChild.nextSibling; (ou .lastChild)
2) M�me m�thode que la pr�c�dente, mais en utilisant XPath.

J'esp�re que mes explications sont assez claires et pas trop ennyeuses.

Pour r�sum� : je voudrais savoir s'il y a une m�thode optimale pour ce genre de tra�tements.
J'avais utilis� les tableaux par feignantise et aussi par ce qu'acc�der � un champ d'un tableau me semblait le plus rapide (en terme de performances). Cependant, stocker autant de donn�es n'est peut-�tre pas conseill� (notamment par mon patron ), ce qui m'a pouss� � m'interroger sur les autres solutions.

J'esp�re qu'il y aura quelques courageux pour me lire jusqu'au bout

Merci d'avance,
b0u31