11545 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous, je cherche à afficher des valeurs contenu dans un document XML (mondoc.xml) à partir d'un fichier html mais en utilisant la fonction javascript xmlhttp (pour l'instant je me cantonne à IE).

voici mon document XML:

mondoc.xml

<?xml version="1.0" encoding="UTF-8"?>

<TEST>
	bonjour


</TEST>


et voici ma page principale où j'aimerai obtenir le contenu de la balise test.


<HTML>

<HEAD>
</HEAD>

<BODY>
<SCRIPT language="Javascript">

	var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;

	XhrObj.open("POST", "mondoc.xml");

	XhrObj.send();

	document.write(XhrObj.[b]responsexml.lastChild[/b]);
</SCRIPT>

</BODY>


</HTML>


Voilà, en fait, à la fin je sais afficher le contenu de mondoc.xml par un responsetext et cela fonctionne, j'obtiens à l'écran Bonjour mais ce que je souhaiterais c'est pouvoir traiter les valeurs en xml en utilisant responsexml.

Je vous remercie d'avance car j'ai retourné tout le web pour obtenir une réponse.

NICOLAS
Salut Solo

En fait, oui, pour charger l'XML, je pourrai utiliser cette méthode là si mon objectif premier était simplement de pouvoir afficher une page web qui affiche des valeurs contenues dans un fichier XML.

Jusque là ca n'aurait pas été un pb, maintenant, le problème, c'est celui ci:

Les valeurs de ce document XML doivent être envoyées chaque seconde et s'afficher dans une page web sans que l'utilisateur voit sa page web clignoter.

A partir de là, j'ai remarqué l'objet XMLHTTP et avec une fonction settimeout, je fais mes requêtes avec l'objetXMLHTTP sur mon document XML chaque seconde, et cela fonctionne bien quand je lui demande de me renvoyer une réponse en texte, mais je ne comprends pas du tout comment réussir à récupérer les données sous format XML et dire de m'afficher le contenu de la balise TEST du fichier XML par exemple.

J'ai essayé de recharger avec un load chaque seconde avec la méthode de cette adresse http://www.quirksmode.org/dom/importxml.html
mais cela ne fonctionne pas.

Si tu as une toute autre solution ou un petit élément de réponse pour afficher des valeurs d'un document XML sur une page web sans que la page clignote mais que les valeurs sont raffraichies chaque seconde, je suis preneur.

Merci encore.
Salut,

ton problème de confort visuel du au clignotement on ne va pas y pouvoir grand chose Smiley ohwell Surtout que tu rafraichis toutes les secondes!
J'ai finalement trouvé la réponse, il fallait bien utiliser l'XMLDOM (nul besoin xmlhttp). Mais il fallait l'utiliser en mode synchrone (async=false). Et là ca passe.

Mes variables (provenant du fichier xml) sont mises à jour sur la page html toutes les deux secondes par exemple. dur labeur de 3 jours complets !!!!

voici mon fichier xml: variables.xml


<?xml version="1.0" encoding="ISO-8859-1"?>

<trames>
	

<trame1> contenu trame 1 </trame1>
		
<trame2> contenu trame 2 </trame2>
<trame3> contenu trame 3 </trame3>


</trames>



voici mon fichier html:



<html>
<head>




<script type="text/javascript">


/* Cet algorithme permet de récupérer des valeurs contenu dans un document XML toutes les deux secondes
sans passer par un rafraîchissement de la page.
Il n'y a aucun scintillement pour Internet Explorer (IE). Mozilla a un petit clignotement 
mais cela reste raisonnable.

*/

//déclaration de la variable qui va contenir les données xml

var tramexml


//fonction qui charge le document XML à partir d'un objet activeX pour IE et implementation pour Mozilla

	function loadXML()
		{


// pour que la fonction soit relancée toutes les deux secondes, récursivité avec la fonction setTimeout
		setTimeout('loadXML()',2000);

		//chargement du fichier XML pour Internet Explorer


		if (window.ActiveXObject)
			
			{
		

			tramexml = new ActiveXObject("Microsoft.XMLDOM");

			// mode synchrone obligatoire pour obtenir l'ensemble de la réponse
			tramexml.async=false;

			//chargement du fichier xml en question
			tramexml.load("variables.xml");

			// lancement de la fonction getmessage() voir plus bas
			getmessage()
			
			}


		// code pour Mozilla


else if (document.implementation && document.implementation.createDocument)


		{

		tramexml= document.implementation.createDocument("","",null);
		tramexml.load("variables.xml");

		tramexml.onload=getmessage
	
		}

		else

		{
	
		alert('le script n\'est pas compatible avec votre navigateur');

		}
}

/* cette fonction affiche le contenu de la balise xml sélectionnée */

function getmessage()


		{

		document.getElementById("boite1").innerHTML=
tramexml.getElementsByTagName("trame1")[0].firstChild.nodeValue

		}

</script>

</head><body onload="loadXML()">

<div id="boite1"></div>



</body>
</html>