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 :

[AJAX] XML to array


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut [AJAX] XML to array
    Bonjour,
    je voudrais récupérer les valeurs d'un XML via xmlHttpRequest et les parser dans un tableau javascript.
    Récupérer les données de l'XML avec responseXML et les afficher ne pose pas de problème, c'est l'écriture dans un tableau qui me bloque.
    Je voudrais un tableau qui récupère la structure de l'XML (exemple ci-dessous).
    Dois-je déclarer un array ou un Objet ?
    Pouvez-vous m'aider en me proposant des exemples ou tutorial ?

    page.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
     
    <html><body>
    <script src="ajaxlib.js" type="text/javascript"></script>
    <script type="text/javascript">
    var xhr = getXMLHttpRequest();
    xhr.onreadystatechange = handleHttpResponse;
     
    var url = "guideTv03.xml"; 
     
    xhr.open("GET", url, true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send(null);
     
    function handleHttpResponse() {
     
    	if(xhr.readyState == 4 && xhr.status == 0) { //200
    		response     = cleanXML(xhr.responseXML.documentElement);
    		//reponse      = xhr.responseText; alert(reponse);
     
    		/* Recuperer la liste des items */
    		var items    = response.getElementsByTagName("show");
    		var resultat = '';
    		var channel  = new Object();
     
    		/* Afficher les items */
    		for(var i = 0; i < items.length; i++) { 
    			var nbnode   = items[i].childNodes.length
     
    			for(var j = 0; j < nbnode; j++) { 
    				var pname    = items[i].childNodes[j].nodeName;
    				var ptext    = items[i].childNodes[j].textContent;
     
    			resultat += i+'.'+ j + ' (' + nbnode + ') <b>'+ pname + '</b> - ' + ptext + '<br />';
    			}
     
    		}
    		document.getElementById('content').innerHTML += resultat;
    	}
     
    }
    </script>
    <div id="content"></div>
    </body>
    </html>
    guideTv03.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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?xml version="1.0" encoding="UTF-8"?>
    <document>
    <header>
    	<generator>mimine</generator>
    	<version>2.0</version>
    	<service>GuideTV</service>
        <lastBuildDate>Tue, 30 Dec 2008 16:59:13 +0100</lastBuildDate>
    </header>
    <content>
     
    <show id="01">
        <chaine_id>1</chaine_id>
    	<chaine_nom>TF1</chaine_nom>
    	<date-begin>1230653400</date-begin>
    	<duration>01:55:00</duration>
    	<title>Sissi impératrice</title>
    	<sub_title></sub_title>
    	<caption>En butte à l’hostilité de sa belle-mère, Sissi fait le difficile apprentissage de la vie à la cour de Vienne.</caption>		
    	<short_summary>Après son mariage avec le jeune empereur François-Joseph, Sissi, qui voit peu son époux, accaparé par les affaires de l'Etat, se sent délaissée, isolée. D'autant qu'elle s'accomode mal de la rigoureuse étiquette observée à la cour de l'archiduchesse Sophie. Bientôt, elle donne naissance à une petite fille, la princesse Gisèle. Mais sa belle-mère ne l'autorise pas à l'élever elle-même...</short_summary>
    	<small_photo></small_photo>
    	<big_photo></big_photo>
    	<kind>Film</kind>
    	<csa>Tous publics</csa>
    	<year>1956</year>
    	<director>Ernst Marischka</director>
    	<personne1>Romy Schneider</personne1>
    	<personne2>Karlheinz Böhm</personne2>
    	<personne3>Magda Schneider</personne3>
    </show>
    <show id="02">
        <chaine_id>2</chaine_id>
    	<chaine_nom>France2</chaine_nom>
    	<date-begin>1230663000</date-begin>
    	<duration>00:05:00</duration>
    	<title>Vendée Globe</title>
    	<sub_title></sub_title>
    	<caption></caption>		
    	<short_summary>Suivi quotidien et analyse de la course</short_summary>
    	<small_photo></small_photo>
    	<big_photo></big_photo>
    	<kind>Magazine</kind>
    	<csa></csa>
    	<year></year>
    	<director></director>
    	<personne1></personne1>
    	<personne2></personne2>
    	<personne3></personne3>
    </show>
    </content>
    </document>
    type d'array recherché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var data =  [
            createChanelShows(
                createShow("001","20:50","Star 
    Academy1","subtitle","TF1","logoTF1.png","imageTF1.png","f2_big.jpg","description 
    de l'emmission","2h25","2009", "France", "Serie","serie", "directeur" , 
    "Nicos Aliagas, artiste2")
                ,createShow("002","22:50","Moon Academy2","subtitle 
    2","TF1","logoTF1.png","imageTF1.png","","description de l'emmission 
    2eme","2h00","2010", "France", "Cinema","cine", "producteur1" , "actor1, 
    actor2"))
    ];

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Connais-tu JSON ? il me semble que c'est ce que tu cherches à faire, convertir
    XML en une structure Javascript.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Salut Marcha,
    je cherche une solution Javascript, certainement avec un Object (array associatif), peut être une fonction générique parcourant les nœuds mais je vois mal comment aborder ça.
    Je ne connais pas JSON, je vais regarder ça.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Spaccio Voir le message
    Object (array associatif)
    Attention de ne pas faire de confusion, un Objet, même s'il peut y ressembler beaucoup, n'est pas un Array associatif, en particulier, il n'accepte pas les propriétés et méthodes spécifiques au type Array !
    Pour le reste, Marcha a (encore une fois) raison : JSON est fait pour ce genre de choses !

Discussions similaires

  1. [AJAX] XML généré ok, responseXML.documentElement vide !
    Par LeCaméléon dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2006, 09h53
  2. [AJAX] xml + php / javascript,problèmes de compréhension
    Par AsQuel dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/11/2006, 22h25
  3. [XML] Type array dans XML
    Par jambonstar dans le forum Delphi
    Réponses: 1
    Dernier message: 11/10/2006, 14h09
  4. [AJAX/XML/JAVA] Afficher un flux de données depuis un site web
    Par chodaboy34 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/10/2006, 16h38
  5. xhr(ajax?) xml et encodage
    Par tthierry dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/12/2005, 16h14

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