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 :

Manipuler XML avec Javascript


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 23
    Points
    23
    Par défaut Manipuler XML avec Javascript
    Salut tout le monde
    J'ai téléchargé sur la toile un exemple de code javascript( dans du html) permettant de lire lun fichier XML,cependant mon navigateur (IE) m'affiche rien du tout,il fait comme si de rien n'était.
    Il y'a le fichier XML emploee.xml et le fichier HTML employee.html

    employee.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <? xml version = "1.0" encoding = "UTF-8"?>  
    	  <company> 
    		  <employee id = "001"> John </employee> 
    		  <turnover> 
    			  <year id = "2000"> 100000 </year> 
    			  <year id = "2001"> 140000 </year> 	
    			  <year id = "2002"> 200000 </year> 
    		  </turnover> 
    	  </company>
    employee.html
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <html> 
       <head> 
        <title> XML dans Microsoft Navigateurs </title> 
        <script language="javascript" type="text/javascript"> 
          var xmlDoc; 
          function loadxml() 
          { 
            xmlDoc = new ActiveXObject ( "Microsoft.XMLDOM"); 
            xmlDoc.async = false; 
            xmlDoc.onreadystatechange = readXML; 
            xmlDoc.load ( "employee.xml"); 
    		alert ( "Root nom de la balise XML:");
          } 
     
          function ReadXML() 
          { 
             if (xmlDoc.readyState == 4) 
             { 
              / / Utilisation documentElement Propriétés 
              / / Output entreprise 
              alert ( "Root nom de la balise XML:" + xmlDoc.documentElement.tagName); 
     
              / / Utilisation firstChild Propriétés 
              / / Output année 
              alert ( "Premier Enfant:" + xmlDoc.documentElement.childNodes [1]. firstChild.tagName); 
     
    	  / / Utilisation lastChild Propriétés 
    	  / / Output moyenne 
    	  alert ( "Last Child:" + xmlDoc.documentElement.childNodes [1]. lastChild.tagName); 
     
    	  / / Utilisation de propriétés et des attributs nodeValue 
    	  / / Ici, à la fois la déclaration sera de retour le même résultat 
    	  / / Output 001 
    	  alert ( "Valeur Node:" + xmlDoc.documentElement.childNodes [0]. attributs [0]. nodeValue); 
    	  alert ( "Valeur Node:" + xmlDoc.documentElement.childNodes [0]. attributes.getNamedItem ( "id"). nodeValue); 
     
    	  / / Utilisation getElementByTagName Propriétés 
    	  / / Ici, à la fois la déclaration sera de retour le même résultat 
    	  / / Output 2000 
    	  alert ( "getElementsByTagName:" + xmlDoc.getElementsByTagName ( "year") [0]. attributes.getNamedItem ( "id"). nodeValue); 
     
    	  / / Utilisation de texte Propriétés 
    	  / / Output John 
    	  alert ( "Text Content for Employee Tag:" + xmlDoc.documentElement.childNodes [0]. texte); 
     
    	  / / Utilisation hasChildNodes Propriétés 
    	  / / Output True 
    	  alert ( "Vérification de noeuds enfants:" + xmlDoc.documentElement.childNodes [0]. hasChildNodes); 
    	  }
         } 
     
        </script> 
       </head> 
     
    	<body Onload="loadxml();"> 
    		<input type="button" name="ok" value="Ok" onclick="ReadXML()"/>
    	</body> 
    	</html>
    Merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 65
    Points : 79
    Points
    79
    Par défaut
    Salut,

    La ligne : xmlDoc.onreadystatechange = readXML;
    cela doit etre xmlDoc.onreadystatechange = ReadXML;

    Signifiant qu'a chaque changement d'etat on appel ReadXML().

    Donc du coup le bouton ne sert a rien.

    Une fois dans ReadXML, on constate que xmlDoc.documentElement = null lorsque l'on rentre dans le if.
    Le document xml n'a peut etre pas été chargé.

    Il y a surement une autre facon de faire.

    Dans le bouquin Javascript La Référence d'O'Reilly chapitre 21, il y a exactement ce que tu veux faire.
    Mais ca tiens sur 5 pages...

    Il y a les scripts d'exemple de ce chapitre a cette adresse:
    http://examples.oreilly.com/jscript5/js5examples.zip

    Voir les fichiers
    01 pour creer un nouveau document XML
    02 pour le charger
    07 pour construire un tableau d'aprés le XML

    Un conseil, si tu ne l'as pas déjà achete ce bouquin, c'est la Bilble du Javascript.

    Bon courage... Thierry

  3. #3
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Pas bon cà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xmlDoc.documentElement.childNodes [0]. texte
    c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xmlDoc.documentElement.childNodes[0].text
    Et si tu dois continuer avec du code dédié à IE je te conseille de parcourir ton arbre en utilisant XPath, ce sera quand même plus facile...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    xmlDoc.getElementsByTagName ( "year") [0]. attributes.getNamedItem ( "id"). nodeValue);
     
    //remplacé par:
    xmlDoc.selectSingleNode("//year[1]/@id").nodeValue
    //faire attention aux indices avec msxml... base 0 ou 1, cela dépend des versions de la librairies

    ERE

  4. #4
    Membre à l'essai
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    39
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 39
    Points : 23
    Points
    23
    Par défaut Xml et javascript
    Bonjour,et merci encore pour vos réponses.
    Je vais revoir mon code comme vous me le conseillez.

    A'd taleur

Discussions similaires

  1. Manipulation fichiers XML avec javascript
    Par michelkey dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/12/2014, 15h45
  2. Manipulation XML avec ASP
    Par loic.keysoft dans le forum ASP
    Réponses: 4
    Dernier message: 16/05/2008, 16h46
  3. incrémenter valeur d'un noeud xml avec javascript
    Par caweb dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/01/2008, 09h52
  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. Lire un xml avec javascript et generer code html ?
    Par zevince dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/04/2006, 11h45

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