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 :

Manipulation fichiers XML avec javascript


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 41
    Par défaut Manipulation fichiers XML avec javascript
    Bonjour,

    Je débute en javascript et je cale sur la manière de récupérer mes données xml à partir de fonctions javascript. L'affichage se passe normalement quand la fonction affichageCours est appelée depuis une page html. Ensuite, j'essaie de passer myCours[i] en paramètre à une autre fonction via(onclick =\"affichagePages("+ myCours[i]+")\"), et c'est là que ça coince. J'ai le message d'erreur suivant dans firebug: SyntaxError: missing ] after element list.
    Je ne vois pas trop où se situe le problème...
    Voici ma fonction javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function affichageCours(target,level){
    	//AFFICHAGE TITRE =>s'affiche correctement
    	var h2_field = document.getElementById("title").getElementsByTagName("h2")[0];
    	h2_field.innerHTML =target[0].getAttribute("title");
    	var p_field = document.getElementById("title").getElementsByTagName("p")[0];
    	p_field.innerHTML= " Auteur: " +target[0].childNodes[0].nodeValue;
    	//AFFICHAGE PAGE
    	document.getElementById("affichageCours").innerHTML="";
    	var myCours= target[0].getElementsByTagName(level);
    	for(var i = 0;i<myCours.length;i++){
    		document.write(myCours[i].childNodes[1].childNodes[0].nodeValue);
    		document.getElementById("affichageCours").innerHTML+= "<li onclick =\"affichagePages("+ myCours[i]+")\">"+myCours[i].getAttribute('title')+"</li>";
    	}	
    }
    Et mon fichier xml
    Code xml : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <!-- Edited by not again you -->
    <user title="Vos cours">
    	John
    	<cours title = "Cours de couture expérimentale">
     
    		<page title="Sommaire du cours" model="sommaire">		
    			<entry>Sommaire</entry>
    			<entry>chap 2</entry>
    			<entry>chap 3</entry>
    		</page>
    		<page title="Un peu de pratique!" model ="exercicesImages">
    			<answers>apple</answers>
    			<answers>banana</answers>
    			<answers>blackberry</answers>
    			<answers>clementine</answers>
    			<answers>coconut</answers>
    			<answers>strawberry</answers>
    			<questions>apple.png </questions>
    			<questions>banana.png</questions>
    			<questions>blackberry.png</questions>
    			<questions>clementine.png</questions>
    			<questions>coconut.png</questions>
    			<questions>strawberry.png</questions>
    		</page>
    		<page title="Un peu de théorie!" model ="content">
    			<content>Beaucoup de blabla.</content>
    			<content>Et puis encore un peu</content>
    		</page>
     
    	</cours>
    	<cours title="Cours de navigation en eaux troubles">
    		<page title ="sommaire du cours" model ="sommaire">
    			<entry>Sommaire</entry>
    			<entry>chap 2: prérequis</entry>
    			<entry>chap 3: la navigation en question</entry>
    		</page>
    		<page>
    			<title>Prérequis</title>
    		</page>
    		<page>
    			<title>La navigation en question.</title>
    		</page>
    	</cours>
     
    </user>

    Merci pour vos réponses,

    Michel.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    déja quand je vois un document.write, je ne m'étonne de rien

    voir http://blog.developpez.com/web/p1065..._en_javascript

    ensuite la console firebug te donne la ligne à laquelle il a trouvé l'erreur ... visiblement il manque un ] avant ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Le problème c'est que tu ne peux pas passer une référence directe sur l'élément myCours[i] dans un attribut onclick, car tout est converti en chaîne. Du coup myCours[i] est converti avec sa méthode toString qui doit renvoyer quelque chose comme [object Element].

    Tape [object Element] sans guillemets dans ta console JavaScript et tu auras le même message d'erreur : SyntaxError: missing ] after element list. C'est parce que l'interpréteur croit que tu veux déclarer un tableau.

    Tu as un petit effort d'adaptation à faire pour résoudre ton problème : utiliser les méthodes du DOM telles que createElement et appendChild, au lieu de document.write et innerHTML.

    En plus de ça tu vas te retrouver confronté au « problème du i qui va trop vite ». Une solution à ce nouveau problème est dans la FAQ. Une autre (qui n'est pas encore dans la FAQ) est d'utiliser la méthode forEach des tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var myCours = target[0].getElementsByTagName(level);
    Array.forEach(myCours, function(cours) {
     var $li = document.createElement('li');
     $li.onclick = function() { affichagePage(cours); };
     $li.appendChild(document.createTextNode(cours.getAttribute(title));
     $affichageCours.appendChild($li);
    });
    PS : J'ai oublié de dire que forEach n'est pas supporté par IE8, mais on peut facilement le rajouter à la main.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 41
    Par défaut
    Génial! ça marche. Merci beaucoup, et aussi merci pour les Cours JavaScript

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

Discussions similaires

  1. Manipuler fichier xml avec JDOM
    Par Flashouilleur dans le forum Android
    Réponses: 6
    Dernier message: 21/01/2016, 14h56
  2. manipulation fichier xml avec java
    Par feridferid dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 03/10/2009, 09h50
  3. charger fichier xml avec du javascript
    Par bilel06 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/03/2008, 15h54
  4. Chargement Fichier XML avec javascript
    Par kaptnkill dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/10/2007, 14h22
  5. Manipulation d'un fichier XML avec Perl
    Par brahak dans le forum Modules
    Réponses: 3
    Dernier message: 01/05/2006, 22h36

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