用户jQuery从XML获取嵌套元素

我在转动轮子。 如何从以下XML中获取以下嵌套元素的值(我还在下面放置代码)? 我追随“descShort”值,然后是资本“Last”和资本“变化”:

  DJI NYSE DELAYED  Dow Jones Industrials 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'); }); } }); 

你的function有一些缺陷。 这应该这样做:

 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'); }); } 

对您的代码有两条评论:

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

在这里,您将元素indexDesc分配给变量code ,稍后您尝试在indexDesc找到元素indexDesc (它不存在)。

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

我真的很想知道values来自哪里,它永远不会被宣布。 而且您不需要在单引号中转义双引号。


我真的建议阅读文档和教程,以获得jQuery的基础知识。

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

第二个请求的示例(这是最可读的,可能的一些优化)

 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 }); }