Utilisateur jQuery pour obtenir des éléments nesteds à partir de XML

Je tourne mes roues sur ce point. Comment obtenir les valeurs des éléments nesteds suivants à partir du XML ci-dessous (j’ai également mis mon code ci-dessous)? Je suis après la valeur “descShort” et ensuite le capital “Last” et le capital “change”:

  DJI NYSE DELAYED  Dow Jones Indussortingals DOW JONES DOW JONES      11144.57 11153.79 10973.92 11018.66 -125.9 -1.1%   11144.57 11153.79 10973.92 11018.66 -125.9 -1.1%  4 16-Apr-2010 16:03:00    XAO ASX DELAYED  ASX All Ordinaries All Ordinaries ALL ORDS 06-Mar-1970     5007.30 5007.30 4934.00 4939.40 -67.9 -1.4%   5007.30 5007.30 4934.00 4939.40 -67.9 -1.4%  997 19-Apr-2010 17:02:54   

 $.ajax({ type: "GET", url: "stockindices.xml", dataType: "xml", success: function(xml) { $(xml).find('index').each(function(){ var self = $(this); var code = self.find('indexDesc'); $(code).find('indexDesc').each(function(){ alert(self.find('descShort').text()); }); $('').html(values[0].text()).appendTo('#marq'); }); } }); 

Vous avez des défauts dans votre fonction. Cela devrait le faire:

 success: function(xml) { $(xml).find('index').each(function(){ var value = $(this).find('indexDesc descShort').text(); value += ' ' + $(this).find('indexQuote capital last').text(); value += ' ' + $(this).find('indexQuote capital change').text(); $('').text(value).appendTo('#marq'); }); } 

Deux commentaires sur votre code:

 var code = self.find('indexDesc'); $(code).find('indexDesc').each(function(){ alert(self.find('descShort').text()); }); 

Ici, vous affectez l’élément indexDesc au code variable et vous essayez plus tard de trouver l’élément indexDesc dans indexDesc (qui n’existe pas).

 $('').html(values[0].text()) 

Je me demande vraiment d’où viennent les values , elles ne sont jamais déclarées. Et vous n’avez pas besoin d’échapper aux guillemets doubles entre guillemets simples.


Je recommande vraiment de lire la documentation et un tutoriel pour obtenir les bases de jQuery.

 success: function(xml) { $(xml).find('index indexDesc descShort').each(function(){ $('').html($(this).text()).appendTo('#marq'); }); } 

Deuxième exemple demandé (c’est le plus lisible, une optimisation possible)

 success: function(xml) { $(xml).find('index').each(function(){ var desc = $('indexDesc descShort', this).text(); var last = $('indexQuote capital last', this).text(); var change = $('indexQuote capital change', this).text(); //Do whatever with the text values }); }