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
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 <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>
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
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 à lhostilité 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>
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")) ];
Partager