Donc je suis un débutant en DOM XML et JavaScript mais j'ai rencontré un problème. J'utilise le script pour afficher mes données XML dans une table sur un site existant. Le problème vient en imbriquant une boucle dans mon code JavaScript.JavaScript et XML Dom - Nested Loop
Voici mon XML:
<?xml version="1.0" encoding="utf-8"?>
<book_list>
<author>
<first_name>Mary</first_name>
<last_name>Abbott Hess</last_name>
<books>
<title>The Healthy Gourmet Cookbook</title>
</books>
</author>
<author>
<first_name>Beverly</first_name>
<last_name>Bare Bueher</last_name>
<books>
<title>Cary Grant: A Bio-Bibliography</title>
<title>Japanese Films</title>
</books>
</author>
<author>
<first_name>James P.</first_name>
<last_name>Bateman</last_name>
<books>
<title>Illinois Land Use Law</title>
</books>
</author>
</book_list>
J'utilise ensuite ce code JavaScript pour lire et afficher les données:
> <script type="text/javascript"> if
> (window.XMLHttpRequest) {
> xhttp=new XMLHttpRequest(); } else
> // Internet Explorer 5/6 {
> xhttp=new
> ActiveXObject("Microsoft.XMLHTTP");
> } xhttp.open("GET","books.xml",false);
> xhttp.send("");
> xmlDoc=xhttp.responseXML;
>
> document.write("<table>"); var
> x=xmlDoc.getElementsByTagName("author");
> for (i=0;i<x.length;i++) {
> document.write("<tr><td>");
> document.write(x[i].getElementsByTagName("first_name")[0].childNodes[0].nodeValue);
> document.write(" ");
> document.write(x[i].getElementsByTagName("last_name")[0].childNodes[0].nodeValue);
> document.write("</td><td>");
> document.write(x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue);
> document.write("</td></tr>"); }
> document.write("</table>"); </script>
Le code fonctionne bien sauf qu'il ne retourne que le premier élément de titre de chaque auteur. Je comprends un peu pourquoi c'est ce qu'il fait, mais je ne sais pas comment imbriquer une autre boucle alors quand le script s'exécute, il affiche tous les titres d'un auteur, pas seulement le premier. Chaque fois que j'essaie d'imbriquer une boucle, elle brise tout le script.
Pourquoi utilisez-vous document.write? – austincheney