Page 1 sur 1
Pb pour parser du XML
Publié : 29 août 2006, 16:31
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 ?
Publié : 29 août 2006, 21:28
par lpgc
bonjour,
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)
Publié : 30 août 2006, 10:09
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...

Publié : 30 août 2006, 10:35
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.
Publié : 30 août 2006, 10:37
par lpgc
bonjour,
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)
Publié : 30 août 2006, 10:59
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>";
Publié : 30 août 2006, 11:38
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.
Publié : 30 août 2006, 11:51
par lpgc
re,
c'est tout bon...
http://www.dvdlib.be/tips/xmlhttp/XMLHttpRequest.htm
Cordialement
Christian
Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Publié : 30 août 2006, 11:54
par guilhem_mdg
Merci à vous, je viens de trouver.
En fait, l'erreur est provoquée parce que j'envoie des lettres accentuées dans mon fichier XML.
Marche pas :
Marche :
Par contre, comment faire pour mettre des lettres accentuées ?

Publié : 30 août 2006, 11:56
par lpgc
sorry,
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)
Publié : 30 août 2006, 11:59
par guilhem_mdg
Résolu !
Merci à tous les gars ! Vous etes géniaux !