11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je débute en javascript et j'ai rencontré un problème plutôt inattendu.
Voilà plusieurs heures que je me casse la tête pour afficher des données d'un XML.

Lorsque je fais un alert sur le contenu d'un nœud, rien de s'affiche sur firefox alors que "null" s'affiche sur IE.

J'ai simplifié au max le code afin de ne pas vous faire perdre trop de temps.

Le fichier de base :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
     <title>page</title>
     <script type="text/javascript">
		 //<![CDATA[
		function load() {
			if (window.ActiveXObject)
			{
				xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
			}
			// code for Mozilla, Firefox, Opera, etc.
			else if (document.implementation.createDocument)
			{
				xmlDoc=document.implementation.createDocument("","",null);
			}
			else
			{
				alert('Your browser cannot handle this script');
			return;
			}
			xmlDoc.async=false;
			xmlDoc.load("test.xml");
			
			alert(xmlDoc.getElementsByTagName('photo')[0].firstChild.nodeValue);
		}
		//]]>
     </script>
   </head>	
   <body onload="load()">
        <p>  [decu] </p>
   </body>
</html>


Le fichier XML :

<?xml version="1.0"?>
<root>
	<photo>
		<idPhoto>1</idPhoto>
		<lien>1.jpg</lien>
		<latitude>49</latitude>
		<longitude>3</longitude>
	</photo>
	<photo>
		<idPhoto>2</idPhoto>
		<lien>2.jpg</lien>
		<latitude>48</latitude>
		<longitude>4</longitude>
	</photo>
</root>


Vous pouvez tester ça ici : http://dekzi.free.fr/test/


En espérant que vous puissiez m'aider Smiley confused
Merci d'avance
Modifié par jORDYx (16 Apr 2010 - 17:56)
Bonjour,

Le contenu textuel représente un nœud dans l'arbre DOM :
root
|_ photo -> nodeValue: ""
  |_ idPhoto -> nodeValue: ""
    |_ [i]Text[/i] -> nodeValue: "1"
...

Tu peux écrire par exemple :
xmlDoc.getElementsByTagName('idPhoto')[0].firstChild.nodeValue
Salut Julien,
Merci beaucoup pour ta réponse qui m'a déjà bien aidée.

Cependant j'aimerais capturer le contenu des balises "latitude" et "longitude" en partant de > xmlDoc.getElementsByTagName('photo')[ i]

Le but étant de faire une boucle avec un for pour récupérer dynamiquement les coordonnées (latitude et longitude) de toutes les photos.

Quelqu'un sait comment faire ? Smiley rolleyes

Merci !
Modifié par Julien Royer (16 Apr 2010 - 13:00)
Le raisonnement est le même :
var photo = xmlDoc.getElementsByTagName('photo')[ i];
alert(photo.getElementsByTagName('latitude')[0].firstChild.nodeValue);
// ...
Wow rapide Smiley biggrin !
Merci beaucoup, je comprend mieux maintenant le fonctionnement.
Problème résolu.
Bye