IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Parser un document XML


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de roots_man
    Inscrit en
    Août 2004
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 328
    Par défaut Parser un document XML
    Bonjour, je souhaite parser un document xml. Pour une partie, j'arrive sans problème mais arrivé à un endroit, je ne trouve plus de solutions !

    Fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <buss>
    	<bus id="1">
    		<nom>Bus 1</nom>
    		<latitude>12.3213</latitude>
    		<longitude>1.5761</longitude>
    		<speed>20</speed>
    		<nextstops>
    			<nextstop>
    				<arret>La fontaine</arret>
    				<time>3</time>
    			</nextstop>
    			<nextstop>
    				<arret>La poste</arret>
    				<time>4</time>
    			</nextstop>
    			<nextstop>
    				<arret>La gare</arret>
    				<time>2</time>
    			</nextstop>
    		</nextstops>
    	</bus>
    	<bus id="2">
    		<nom>Bus 2</nom>
    		<latitude>3.3242234</latitude>
    		<longitude>6.234324</longitude>
    		<speed>0</speed>
    		<nextstops>
    			<nextstop>
    				<arret>La gare</arret>
    				<time>08:00</time>
    			</nextstop>
    		</nextstops>
    	</bus>
    </buss>
    Maintenant le code pour parser ce fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    var nbBus = xmlDoc.getElementsByTagName("bus");
    for(var i=0;i<nbBus.length;i++)
    	{
    	var tmp = xmlDoc.getElementsByTagName("bus")[i];
    	if(tmp.hasChildNodes())
    		{
    		var nom = xmlDoc.getElementsByTagName("nom")[i].childNodes[0].nodeValue;
    		var longitude = xmlDoc.getElementsByTagName("longitude")[i].childNodes[0].nodeValue;
    		var latitude = xmlDoc.getElementsByTagName("latitude")[i].childNodes[0].nodeValue;
     
    		var nextStop = xmlDoc.getElementsByTagName("nextstop");
    		for(var j=0;j<nextStop.length;j++)
    			{
    			var arret = xmlDoc.getElementsByTagName("arret")[j].childNodes[0].nodeValue;
    			var time = xmlDoc.getElementsByTagName("time")[j].childNodes[0].nodeValue;								
    			}				
    		}	
    	}
    En fait, le nom, la longitude et la latitude, j'arrive à les récupérer sans problème, le problème c'est pour les arrets et le temps de chaque bus ! Je pense qu'il faut refaire une boucle mais je ne vois pas comment ! Actuellement, il me retourne pour chaque bus, toutes les valeur (arret+time) de tout le fichier, je n'arrive pas a lui dire de prendre seulement celui du bus en cours.

    Merci d'avance pour votre aide

  2. #2
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Sache que la méthode getElementsByTagName peut tout aussi bien être appliquée à un noeud particulier qu'à l'arbre complet : ça permet, en cas de besoin, de restreindre la recherche à une branche plutôt qu'à l'ensemble. Exemple :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    var nbBus = xmlDoc.getElementsByTagName("bus");
    for(var i=0;i<nbBus.length;i++)
    	{
    	//var tmp = xmlDoc.getElementsByTagName("bus")[i];
            // la ligne ci-dessus : dommage de ne pas réutiliser ta variable nbBus...
            var tmp = nbBus[i];
    	if(tmp.hasChildNodes())
    		{
    		var nom = tmp.getElementsByTagName("nom")[0].childNodes[0].nodeValue;
    		var longitude = tmp.getElementsByTagName("longitude")[0].childNodes[0].nodeValue;
    		var latitude = tmp.getElementsByTagName("latitude")[0].childNodes[0].nodeValue;
    	
    		var nextStop = tmp.getElementsByTagName("nextstop");
    		for(var j=0;j<nextStop.length;j++)
    			{
                            var n = nextStop[j];
    			var arret = n.getElementsByTagName("arret")[0].childNodes[0].nodeValue;
    			var time = n.getElementsByTagName("time")[0].childNodes[0].nodeValue;								
    			}				
    		}	
    	}

  3. #3
    Membre éclairé Avatar de roots_man
    Inscrit en
    Août 2004
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 328
    Par défaut
    thx it works !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. parser un document xml
    Par TERRIBLE dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/03/2008, 08h06
  2. [SAX] parser un document xml
    Par skyangel dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 11/12/2007, 19h18
  3. [DOM4J] Parser un document XML avec DOM
    Par kroax dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 23/11/2007, 01h48
  4. [SimpleXML] parser un document xml distant
    Par turican2 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/05/2007, 15h18
  5. Parser mon document XML.
    Par Bruno13 dans le forum Langage
    Réponses: 3
    Dernier message: 28/01/2006, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo