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 :

Parcours xml


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut Parcours xml
    salut
    j'ai des difficulter sur le parcours dun fichier xml
    voici le xml en question:
    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
    <?xml version="1.0" encoding="utf-8" ?>
    <agences>
    	<agence id="1">
    		<enseigne>APE</enseigne>
    		<latitude>45.12</latitude>
    		<longitude>05.42</longitude>
    		<adresse>3, rue Emile Zola</adresse>
    		<codeP>38100</codeP>
    		<ville>Grenoble</ville>
    		<telephone>04 76 43 22 27</telephone>
    		<mail>echo</mail>
    		<fax>echo</fax> 
    		<description>echo</description>
    	</agence>
    	<agence id="2">
    		<enseigne>APE</enseigne>
    		<latitude>45.27</latitude>
    		<longitude>04.22</longitude>
    		<adresse>Z.I. Necker - Rue Necker</adresse>
    		<codeP>42000</codeP>
    		<ville>Saint Etienne</ville>
    		<telephone>04 77 25 02 24</telephone>
    		<mail>echo</mail>
    		<fax>echo</fax> 
    		<description>echo</description>
    	</agence>
    </agences>
    et mon code
    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
     
    	var request = GXmlHttp.create();
    	request.open("GET", "http://localhost/projet_ing/essaifrance/data.xml", true);//appel du fichier xml par XMLHttpRequest
    	request.onreadystatechange = function() {
    		document.getElementById('state').innerHTML=": "+request.readyState+"   "+request.statusText;
     
    		if (request.readyState == 4) {//si les données sont charger on passe a la suite
    		var xmlDoc = request.responseXML;
    		var markers = xmlDoc.documentElement.getElementsByTagName("agence");//on se place sur les noeuds agences
    		document.getElementById('essai').innerHTML="nombre d'agences"+ markers.length;
    		for (var i = 0; i < markers.length; i++) {
    			document.getElementById('bl').innerHTML=": varibale"+i;
    			document.getElementById('essai').innerHTML=": longitude: "+ markers[i].childNodes[3].nodeValue;//on devrai recuperer la longitude
    			//document.getElementById('essai').innerHTML=": longitude: "+markers[i].getElementsByName('codeP').value);
    			/*var point = new GPoint(parseFloat(markers[i].childNode(2).nodeValue),
    			parseFloat(markers[i].childNode(1).nodeValue));
    			var marker = new GMarker(point);
    			map.addOverlay(marker);*/
    		}
    		}
     
    	}
    mon but est de recuperer la latitude et la longitude mais au lieu de cela je recupere un undifiner et ma boucle est parcourue 1 seule fois

    j'ai vue la faq cependant je ne sais pas si je suis dans la meme cas
    car mon nombre d'item a recupere est 2 et markers.lenght m'affiche 2

    j'sepere que j'ai été clair
    merci

  2. #2
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut Re: Parcours xml
    Citation Envoyé par jeff_!
    document.getElementById('essai').innerHTML=": longitude: "+ markers[i].childNodes[3].nodeValue;
    Je te conseille un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('essai').innerHTML=": longitude: "+ markers[i].getElementsByTagName('longitude').firstChild.nodeValue;
    Attention, avec ta technique d'innerHTML que tu remplaces, il est normal qu'il ne t'affiche que la longitude de la dernière des agences....

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    pour l'affichage c'est pas grave ce n'est pas le but
    ke but est de creer des objets avec la latitude et la longitude pour google-map

    mia ston code ne fonctionne pas, j'ai ce message d'erreur
    Erreur : markers[i].getElementsByTagName("longitude").firstChild has no properties
    Fichier Source : http://localhost/projet_ing/essaifrance/essai.htm
    Ligne : 49

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut Re: Parcours xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('essai').innerHTML=": longitude: "+ markers[i].getElementsByTagName('longitude').firstChild.data;
    Peut-être... ? (il faut essayer, c'est pas loi de ça).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    j'ai essayer plusieur truc mais rien ne fonctionne
    desoler de faire mon boulet est tu sur que firstchild soit neccessaire
    je ne comprend pas son utilité

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    au fait je suis une vrai buse en js
    tention, avec ta technique d'innerHTML que tu remplaces, il est normal qu'il ne t'affiche que la longitude de la dernière des agences....
    quelles seraient les autres methodes pour tous voir
    l'ideal ca serai equivalent de print_r ou var_dump

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    met un += au lieu du =

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    mon message d'erreur a un peut varier

    il me dit que firstChild.nodeValue est vide null ou n'est pas un objet[/quote]

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    euh j ai pas vu dans quel navigateur tu fais tes tests

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    je fais mais test sous ff1.07 et ie6

  11. #11
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('essai').innerHTML+=": longitude: "+ markers[i].getElementsByTagName('longitude')[0].firstChild.nodeValue;

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    ba ca ma l'air tout bon ca
    mais je ne comprend pas le code
    pourquoi firstchild et pourquoi doit on indicer le tableau(l'objet) renvoyer TagName

    en tout cas merci a tous les 2

  13. #13
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    alors,

    getElementsByTagName te renvoit toujours un tableau.
    Donc si il n'y a qu un resultat, c est [0].

    Ensuite, ton text se trouve en fait dans un noeud de type text, comme si tu avais fais un document.createTextNode.
    Pour récupérer sa valeur c est le noeud.nodeValue.
    C'est le premier fils de ton element donc : firstChild.nodeValue

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    ok merci

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    je vais vous demander encore un petit coup de main
    mon but avec le script suivant est de recuperer mes info de mes agences
    sans connaitre le non des balises
    le script fonctionne sous ie mais pas sous ff(je doit pas aller assez loin dans l'arbre)
    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
          function createMarker(point, number) {
          	//creation du marker
          	var marker = new GMarker(point);
          	GEvent.addListener(marker, "click", function(){//on declenche  sur un click l'affichage des données
          		var request = GXmlHttp.create();
          		request.open("GET", "http://localhost/projet_ing/essaifrance/data.xml",true);//appel du fichier xml par XMLHttpRequest
          		request.onreadystatechange = function() {
          			if (request.readyState == 4){
          				alert("etat"+request.readyState+" nombre "+number);
          				var xmlDoc = request.responseXML;
          				var markers = xmlDoc.documentElement.getElementsByTagName("agence");
          				for (var i = 0; i < markers.length; i++) {
          					if(markers[i].getAttribute('id') == number){
          						for (var u = 2; u < 10; u++) {
          							//svar name=;
          							document.getElementById(markers[i].childNodes[u].firstChild.nodeName).innerHTML+=markers[i].getElementsByTagName(markers[i].childNodes[u].fisrtChild.nodeName)[0].firstChild.nodeValue;
          						}
          					}
          				}
          			}
          		}
          		request.send(null);
          	});
          	return marker;
          }
    et le morceaux qui pose probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    markers[i].childNodes[u].nodeName
    merci de votre aide encore une fois

  16. #16
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Si tu utilises childNodes et firstChild, tu va être obligé d'utiliser un node Cleaner. Regardes dans le sujet de ce forum parlant de la FAQ, tu trouveras un morceau de discussion entre JT et moi concernant un code de node cleaner....

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    ouai ja vu cette conversation, mais j'arrive pas a faire fonctionner le code de jt (pb avec l'ereg il dit qu'il manque une parenthese ou un truc du genre)et le tien je n'ai pas encore essayé
    sinon est-ce qu'il y aurait une autre methode

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    ba voici l'autre methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    markers[i].getElementsByTagName('*')[u].nodeName
    si vous avez mieux ou si vous savez comment appliquez le node cleaner a ma situation je suis preneur

  19. #19
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Avec mon code, un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cleanWhitespace(xmlDoc.documentElement);
    Devrait parfaitement fonctionner

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    je vais tester

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [C#][XML] parcours XML débutant
    Par loic_86 dans le forum C#
    Réponses: 5
    Dernier message: 03/04/2011, 12h46
  2. Problème avec namespace pour parcours xml
    Par ramroum1986 dans le forum APIs
    Réponses: 3
    Dernier message: 20/05/2010, 12h46
  3. Parcours XML recursif
    Par gostbuster dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/08/2009, 16h48
  4. [DOM] Parcours XML
    Par speedev dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/11/2007, 12h16
  5. actionScript classe parcours XML
    Par LeXo dans le forum Flash
    Réponses: 2
    Dernier message: 26/06/2007, 16h06

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