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) :
Dans mon code Javascript, je dois acc�der plusieurs fois aux valeurs contenus dans ce fichier pour afficher les r�servations (en SVG).
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>
Ma premi�re id�e (la plus courte � �crire) a �t� de stocker tous les noeuds utiles dans des tableaux avec le code suivant :
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 dateTab = xmlDocument.getElementsByTagName("date"); var villeTab = xmlDocument.getElementsByTagName("ville");
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
3 var nbReservations = xmlDocument.getElementsByTagName("reservation").length; for(var i=0; i<nbReservations; 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>.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 dateTab[i] et villeTab[i]
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 :
2) M�me m�thode que la pr�c�dente, mais en utilisant XPath.
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)
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 feignantiseet 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
Partager