begin process at 2012 05 29 13:17:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

parser un xml


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

parser un xml

samedi 21 août 2010 à 12:05:09 | parser un xml

zeitoun69

Bonjour je dois parser un fichier xml et former un tableau a partir des données extraite
j'ai réussi a former le tableau mais les données sont celles de la premiere ligne, voici mon code, je suis débutant soiyez ingulgent sur la propreté ..

// début du code
function submitForm() {
var xhr_object = null;

if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

xhr_object.open("GET", "dispoMAJ-2010.xml", true);

/*
//0 ou un nombre supérieur à 0
*/

xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var xml =xhr_object.responseXML;
var racine = xml.documentElement;

var result="";
document.write( "<table width='100%' border='1'> <tr> <td></td>" );
// on teste d'abord le nmbre de jours présents dans la base
for(var i = 0; i<racine.childNodes.length; i++){
if (xml.getElementsByTagName("MAJDispo")[i])
document.write("<td width ='200'>"+xml.getElementsByTagName("MAJDispo")[i].getAttribute("date")+"</td>");
}
document.write( "</tr> <tr> " );
getFils(racine);
document.write( "</tr><table>" );
}



function getFils(xml){
if (xml.nodeName =="CompteDispo")
{
for(var i = 0; i<xml.childNodes.length; i++){
var element = xml.childNodes[i];
// On affiche le nom des appartements
document.write( "<td><b>"+element.nodeValue+"</b> </td>" );
}
for(var k = 0; k<racine.childNodes.length; k++){
// for(var i = 0; i<xml.childNodes.length; i++){
//s'il existe une date alors on affiche la dispo
if (racine.getElementsByTagName("MAJDispo")[k])
document.write("<td>"+racine.getElementsByTagName("MAJDispo")[k].getElementsByTagName("CompteDispo")[i].getAttribute("Nb_loge")+"</td>");
//}
}
}


for(var i = 1; i<xml.childNodes.length; i++){
var element = xml.childNodes[i];
var nom = element.nodeName;
if(element.nodeType==1)
{document.write( "<tr>" );
getFils(element);
document.write( "</tr>" );}


}
}


}

xhr_object.send(null);

}
/*fin du code*/




le fichier XML est de la forme de
<?xml version="1.0" encoding="UTF-8"?>
<donnees>
<MAJDispo date="2010-12-01">
<Dispo>
<CompteDispo Nb_loge="1">element1</CompteDispo>
<CompteDispo Nb_loge="0">element2</CompteDispo>
<CompteDispo Nb_loge="1">element3</CompteDispo>
</dispo>
</MAJDispo>
<MAJDispo date="2010-12-02">
<Dispo>
<CompteDispo Nb_loge="0">element1</CompteDispo>
<CompteDispo Nb_loge="0">element2</CompteDispo>
<CompteDispo Nb_loge="1">element3</CompteDispo>
</dispo>
</MAJDispo>
</donnees>
Zeitoun
mardi 24 août 2010 à 16:15:41 | Re : parser un xml

PetoleTeam

Membre Club
Bonjour,
tout d'abord il est à signaler que document.write() remplace le contenu du document, donc à éviter dans ton cas.

Pour ce qui est de lire ton fichier XML il est souhaitable d'imbriquer tes boucles

Dans le principe cela donnerait un truc ressemblant à cela, à toi d'affiner pour que cela colle à ton besoin
Code Javascript :
//-- La chaine a ecrire dans une DIV par exemple
var Html = "";
Html += "<table>";
//-- Recup Objet au format DOM
var O_Xml = xhr_object.responseXML
//-- Recup NodeList balises MAJDispo
var T_Maj = O_Xml.getElementsByTagName("MAJDispo");
//-- Parcours NodeList balises MAJDispo
for( var i = 0, nb_i = T_Maj.length; i < nb_i; i++){
  //-- balise en cours
  var O_Maj = T_Maj[i];
  //-- recup de la date
  var szDate = O_Maj.getAttribute("date");
  //-- Ecriture nouvelle ligne  
  Html += "<tr><td>" + szDate +"<\/td><\/tr>;

  //-- Recup NodeList balises Dispo
  var T_Dispo = O_Maj.getElementsByTagName("Dispo");
  //-- Parcours NodeList balises MAJDispo  
  for( var k = 0, nb_k = T_Dispo.length; k < nb_k; k++){
    //-- balise en cours
    var O_Dispo = T_Dispo[k];
    //-- Recup NodeList balises CompteDispo
    var T_Compte = O_Dispo.getElementsByTagName("CompteDispo");
    //-- Parcours NodeList balises CompteDispo      
    for( var j = 0, nb_j = T_Compte.length; j < nb_j; j++){
      //-- balise en cours
      var O_Compte = T_Compte[j];
      //-- Recup Info
      var szNomLogement = O_Compte..childNodes[0].nodeValue;
      var szNbrLogement = O_Compte.getAttribute("Nb_loge"); 
    }    
  }  
}  
Html += "<\/table>";

il ne te restera plus qu'à mettre le Html au bon endroit.
;O)
mardi 24 août 2010 à 16:18:28 | Re : parser un xml

PetoleTeam

Membre Club
j'ai oublié de mettre la phrase qui tue
Pas testé donc gare aux fôtes de frappe et autres

sur cette ligne par exemple il y a un point en trop...
Code Javascript :
var szNomLogement = O_Compte..childNodes[0].nodeValue;

;O)
mardi 24 août 2010 à 19:50:51 | Re : parser un xml

zeitoun69


Bonjour
et merci pour ton coup de pouce
pour le document.write() je l'utilisais simplement pour tester mon code

concernant ta proposition j'ai un souci car firebug me retourne une erreur sur la ligne
var T_Maj = O_Xml.getElementsByTagName("MAJDispo");
l'erreur est "O_Xml is null"
d'ou peut venir le probleme ?
SI tu as une idée merci d'avance
pour info j'ai placé le code suivant avant le tien

Code Javascript :
var xhr_object = null; 
	 
	if(window.XMLHttpRequest) // Firefox 
	   xhr_object = new XMLHttpRequest(); 
	else if(window.ActiveXObject) // Internet Explorer 
	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");  
	} 
	 
	xhr_object.open("GET", "dispoMAJ-2010.xml", true); 

Merci

Zeitoun
mercredi 25 août 2010 à 09:20:58 | Re : parser un xml

PetoleTeam

Membre Club
Bonjour,
à priori pas de raison qu'il soit null, c'est le même que celui que tu as déclaré dans ta fonction
Code Javascript :
xhr_object.onreadystatechange = function() {
  if( xhr_object.readyState == 4) {
  var xml = xhr_object.responseXML; 
juste avec un nom différent donc
Code Javascript :
xhr_object.onreadystatechange = function() {
  if( xhr_object.readyState == 4) {
  var O_Xml = xhr_object.responseXML; // ICI O_Xml
je rajouterais simplement
Code Javascript :
xhr_object.onreadystatechange = function() {
  //-- Termine, les donnees sont chargees
  if( xhr_object.readyState == 4){
    //-- Reponse OK
    if(( xhr_object.status == 0)||( xhr_object.status == 200)){
      var O_Xml = xhr_object.responseXML; 
      //-- ton code ICI --//
    }
  }
}

;O)
mercredi 25 août 2010 à 09:48:51 | Re : parser un xml

zeitoun69


Merci
l'erreur venait d'ailleurs à priori mais ca fonctionne à présent
la difficulté que je rencontre est de devoir faire la liste de tous les attributs pour chaque élément de facon à avoir
élément 1 : 1,0,1,1,0,0...
élément 2 : 0,0,0,1,1,0....
Merci d'avance

Zeitoun
mercredi 25 août 2010 à 10:01:38 | Re : parser un xml

PetoleTeam

Membre Club
dans ce cas il te faut peut être revoir la structure de ton fichier XML, ou de mettre tes données dans un tableau associatif et de traiter celui ci...

;O)
mercredi 25 août 2010 à 19:13:05 | Re : parser un xml

zeitoun69

Je n'ai pas le choix de la forme du fichier XML, je dois faire avec...


Zeitoun
jeudi 26 août 2010 à 08:11:26 | Re : parser un xml

PetoleTeam

Membre Club
Bonjour,
Je n'ai pas le choix de la forme du fichier XML, je dois faire avec...
donc tableau associatif...
;O)
jeudi 26 août 2010 à 08:14:00 | Re : parser un xml

PetoleTeam

Membre Club
j'oubliais, voir du coté du format JSON éventuellement...
;O)

1 2

Cette discussion est classée dans : var, xml, xhr, object, if


Répondre à ce message

Sujets en rapport avec ce message

intérompre une fonction... [ par davidcian ] Bonjour,Je cherche a stopper le déroulement d'une fonction lors d'une condition, j'ai testé avec return mais ça marche pas...Fonction principal:functi jquery et ajax formulaires [ par Annadrill ] bonsoir, j'aimerais savoir comment je dois m'y prendre pour recréer un script du type de celui ci-dessous pour jquery, le systeme étant que les cha Requête Ajax avec Jquery [ par monoski ] Bonsoir tout le monde j'aimerai bien passer à Jquery pour mes requêtes ajax qui sont codées actuellement en "dur" on va dire ^^ Alors ayant lu les do XMLHttpRequest pas de retour php [ par vol68 ] Hello et merci d'avance j'ai trouvé pratiquement ce que je cherchai avec le script ci dessous en le modifiant un peu, mais..... 1er probleme en ce qu Pb avec xhr_object.open et IE [ par Degom95 ] Bonjour, Je gère un site de club et j'ai essayé de mettre à jour un DIV avec un fichier externe, après pas mal de recherche sur Codes-Sources, j'ai vu panier d'achat mis a jour [ par Dav_c ] Bonjour, je code un script de e-commerce qui pour l'instant marche sans problème sauf que le panier ne s'actualise pas toujours. Bref un peu de code XMLHttpRequest [ par softghost ] bonjour tous le monde;j'utilise xmlhttprequest pour l'envoi de requet entre les page en restand sur index avec un il marche tres bien, a mon cas j'ape encore une fonction qui marche pas ! [ par nicomilville ] Salut,J'ai encore un problème avec une fonction qui ne marche pas !ma fonction :function aff_discution() { var xhr_object = null;  if(window.XMLHttpRe Encore des erreurs ! [ par nicomilville ] Salut,Et oui, c'est encore moi, vous devez vous dire que je suis un nul, c'est peut être vrai, lol J'ai encore des erreurs sur mon code... Si ça co Envois formulaire XMLHttpRequest POST BDD [ par Annadrill ] bonjour,alors voilà, cela fait trois jours que je tourne en rond avec un problème qui à l'air idiot mais que je n'arrive à résoudre.je m'explique, j'a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales