Bonjour à tous,

Je sèche méchamment pour parser un fichier xml.

Le résultat ici: xml_lire_avec_jquery.htm

Voici la partie qui me pose problème:


	<prediccion>
		<dia fecha="2016-03-15">
			<cota_nieve_prov periodo="00-24"></cota_nieve_prov>
			<cota_nieve_prov periodo="00-12"></cota_nieve_prov>
			<cota_nieve_prov periodo="12-24">1300</cota_nieve_prov>
			<cota_nieve_prov periodo="00-06"></cota_nieve_prov>
			<cota_nieve_prov periodo="06-12">900</cota_nieve_prov>
			<cota_nieve_prov periodo="12-18">1200</cota_nieve_prov>
			<cota_nieve_prov periodo="18-24">1400</cota_nieve_prov>
		</dia>
		<dia fecha="2016-03-16">
			<cota_nieve_prov periodo="00-24">1200</cota_nieve_prov>
			<cota_nieve_prov periodo="00-12">1300</cota_nieve_prov>
			<cota_nieve_prov periodo="12-24">1100</cota_nieve_prov>
			<cota_nieve_prov periodo="00-06">1400</cota_nieve_prov>
			<cota_nieve_prov periodo="06-12">1300</cota_nieve_prov>
			<cota_nieve_prov periodo="12-18">1200</cota_nieve_prov>
			<cota_nieve_prov periodo="18-24">1000</cota_nieve_prov>
		</dia>


J'arrive sans problème à prendre la date et les heures, par contre impossible de prendre le chiffre entre <cota_nieve_prov periodo="12-24"> 1300 </cota_nieve_prov>


$.ajax({
  type: "GET",
  url: "../xml/meteo.xml",
  dataType: "xml",
  success: function(xml) {
    
    $(xml).find('dia').each(
      function() {
        var date = $(this).attr('fecha');
        var neige = $(this).find('cota_nieve_prov').text();
        $('<div class="items" id="link_' + date + '"></div>').html(date).appendTo('#Div_meteo');

        $(this).find('cota_nieve_prov').each(function() {
          var periodo = $(this).attr('periodo');
          var nieve = $('cota_nieve_prov').children();

          console.log('nieve: ' + nieve);
          $('<div class="nieve"></div>').html(periodo + ' : ' + nieve + ' cm').appendTo('#Div_meteo');
        });
        
      });
  }
});



C'est au niveau de "var nieve = $('cota_nieve_prov').children();". Je ne sais pas comment récupérer cette valeur.


Y-aurait-il un tutoriel qui expliquerait en profondeur toutes les possibilités d’accéder à n'importe quel valeur d'un fichier XML.

D'avance merci à tous.
Modifié par nabucco (17 Mar 2016 - 20:37)
Modérateur
JENCAL a écrit :
Salut,
je te conseil fortement de te rapprocher de $.parseXML().


Jcuicui pour ça, bof bof.... Smiley ohwell
JENCAL a écrit :
Salut,
je te conseil fortement de te rapprocher de $.parseXML().


Salut,
Merci de ton commentaire. Mais ça n'apporte aucune solution à mon problème.

J'arrive bien à accéder à la valeur en rouge ici <cota_nieve_prov periodo="00-24"> 1300 </cota_nieve_prov>

Le retour est le suivant: 00-24 : [object Object] cm

Pour ton info, voici le xlm concerné: http://www.aemet.es/xml/municipios/localidad_22054.xml
Modifié par nabucco (17 Mar 2016 - 21:36)
niuxe a écrit :


Jcuicui pour ça, bof bof.... Smiley ohwell


bah il utilise deja jquery ... Smiley decu donc de base.... pas top..
JENCAL a écrit :
Dans [object Object] , tu as tout ton DOM... le body, le head, etc...


JENCAL a écrit :
Dans [object Object] , tu as tout ton DOM... le body, le head, etc...


Je ne comprend rien à ce que tu racontes.

Voici ce qui ressort. Je ne vois pas comment tout le DOM pourrait se trouver dans à chaque ligne.
upload/39652-2016-03-17.png

La structure du fichier est la suivante:
upload/39652-2016-03-18.gif
J'espère que c'est clair à présent.
Modérateur
Salut,

Jcuicui pour ça.... Normalement, il faudrait mettre en place un callback pour que la query Ajax soit réutilisable.
code fait de tête, je peux m'être trompé.

var xhr = new XMLHttpRequest();

xhr.open('GET', 'test.xml', true);

xhr.addEventListener("load", function(){
	if (xhr.readyState == 4 && xhr.status == 200) {
		var xml = xhr.responseXML;
		var dia = xml.querySelectorAll('prediccion dia');
		
		for(var i = 0, nbDia = dia.length; i < nbDia; i++){
			console.log(dia[ i ].getAttribute('fecha'), dia[ i ].querySelector('prediccion cota_nieve_prov[periodo="12-24"]').innerHTML);
		}
	}
	
});
xhr.send(null);

Modifié par niuxe (18 Mar 2016 - 14:42)
JENCAL a écrit :

          var nieve = $(this).html();
          console.log('nieve: ' + nieve);

cela fonctionne.


Super merci, en effet c'est exactement ce qui me manquait.

Merci Jencal.
nabucco a écrit :


Voici ce qui ressort. Je ne vois pas comment tout le DOM pourrait se trouver dans à chaque ligne.


je parlais bien entendu du DOM xml qui se trouvait dans le DOM html de la page hein Smiley cligne
Bonjour,

En fait la réponse était dans la question, il s'agissait en gros de ta variable neige qui n'était pas utilisée et surtout pas dans la boucle...
$(this).text() // devrait également fonctionner