Pb pour parser du XML

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Pb pour parser du XML

Message par guilhem_mdg »

Bonjour,

La ligne :

Code : Tout sélectionner

document.getElementById('cleDocument').value=doc.getElementsByTagName('cledoc').item(0).firstChild.data;
fonctionne sous Mozilla mais pas sous IE...

Pourquoi ?
Cordialement.
Guilhem.
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

bonjour, :D

j'ai fait quelques tests sur IE et Firefox, voici un code qui fonctionne...
sorry j'ai tj pas installé Opéra donc là je ne sais pas si c'est ok

Code : Tout sélectionner

<DIV id="oDiv">
    <SPAN>Immediate Child
        <DIV>
            <SPAN>Child of Child DIV</SPAN>
        </DIV>
    </SPAN>
</DIV>
<SCRIPT>
var aSpans = oDiv.getElementsByTagName("SPAN");
alert ( aSpans.length + " " + aSpans[0].childNodes[0].nodeValue );
alert ( aSpans.length + " " + aSpans.item(0).firstChild.nodeValue );
</SCRIPT>
Cordialement
Christian

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Euh, non, ta solution ne marche pas.
En fait, je réalise un traitement grâce à l'AJAX et ce traitement me renvoie une page XML.
Je la récupère en Javascript mais je n'arrive pas à récupérer la valeur du 1er noeud <versions>
Pouvez-vous m'aider ?
Merci.
PS: Je fait actuellement :

Code : Tout sélectionner

var doc = xhr_object.responseXML;
			document.getElementById(id).innerHTML=doc.getElementsByTagName('message').item(0).firstChild.data;
Mais cela ne marche que sous Mozilla et pas sous IE... :cry:
Cordialement.
Guilhem.
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message par chBok »

Et pour AJAX, tu utilises quelle méthode d'appel ? MSIE gère un objet XMLHTTPrequest différent de celui de Mozilla Firefox.
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

bonjour, :D
ce serait possible d'avoir le XML pour voir :?:
le 1er noeud étant sous la racine je suppose
Cordialement
Christian

PS. Si c'est un problème avec responseXML, je sais pas...
j'ai préféré l'autre méthode responseText suite à cet article :
http://www.quirksmode.org/blog/archives ... tes_r.html




Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Code : Tout sélectionner

<script type="text/JavaScript">
//<![CDATA[
function makeRequestPostXML(url,parametres,id){

	var xhr_object = null;
	if(window.XMLHttpRequest)
		xhr_object = new XMLHttpRequest();
	else
		if(window.ActiveXObject)
			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		else{ 
			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
			return;
		}

	var method = "POST";
	var filename = url;
	var data = parametres;
	xhr_object.open(method, filename, true);

	xhr_object.onreadystatechange = function(){
		if(xhr_object.readyState == 4){
			var doc = xhr_object.responseXML;
			document.getElementById(id).innerHTML=doc.getElementsByTagName('message').item(0).firstChild.data;
			document.getElementById('cleDocument').value=doc.getElementsByTagName('cledoc').item(0).firstChild.data;
			document.getElementById('cadreVersions').innerHTML=doc.getElementsByTagName('versions').item(0).firstChild.data;
		}
	}

	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
	xhr_object.send(data);
}
//]]>
</script>
url : fichier php qui génère le XML

Code : Tout sélectionner

header('Content-type:text/xml;charset=iso-8859-1');
echo "<document>";
echo "<cledoc>".$cleDoc."</cledoc>";
				echo "<message>".date('H:i',time())." : Le document a été créé.</message>";
				echo "<versions></versions>";
echo "</document>";
Cordialement.
Guilhem.
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message par chBok »

A la limite, tu peux "débugguer" le résultat XML reçu grâce à un sérializer :

Code : Tout sélectionner

var s = new XMLSerializer();
var doc = xhr_object.responseXML;
alert(s.serializeToString(doc));
Tu verras au moins quelle forme ont tes données dans le javascript.
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

re, :D

c'est tout bon...
http://www.dvdlib.be/tips/xmlhttp/XMLHttpRequest.htm
Cordialement :D
Christian

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Merci à vous, je viens de trouver. :lol:
En fait, l'erreur est provoquée parce que j'envoie des lettres accentuées dans mon fichier XML.

Marche pas :

Code : Tout sélectionner

<message>Le message a été créé</message>
Marche :

Code : Tout sélectionner

<message>Le message a ete cree</message>
Par contre, comment faire pour mettre des lettres accentuées ? :?
Cordialement.
Guilhem.
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

sorry, :oops:

juste ajouté :
<?xml version="1.0" encoding="ISO-8859-1" ?>

Code : Tout sélectionner

header('Content-type:text/xml;charset=iso-8859-1'); 
echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
echo "<document>"; 
Cordialement
Christian

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Résolu ! :lol:
Merci à tous les gars ! Vous etes géniaux !
Cordialement.
Guilhem.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité