2011-08-14 66 views
1

我是一个新手,并试图遍历ajax加载的XML文件。我试图从中填充所有的名字和城市,如果名字很常见,那么我只会追加这个城市的普通名称。遍历xml使用重复数据使用jquery

我的XML文件

 <Info> 
     <detail> 
     <country>US</country> 
     <name>Edward</state> 
     <city>San bruno</city> 
     </detail> 

     <detail> 
     <country>US</country> 
     <name>Edward</state> 
     <city>Charleston </city> 
     </detail> 
     </info> 

我一个试图证明它在这样

 Edward 
     San Bruno 
     Charleston 

我的jQuery代码看起来像这样

 $.ajax({ 
     type: "GET", 
    url: "sheet.xml", 
    dataType: "xml", 
    success: function(xml) { 
     $(xml).find('detail').each(function(){ 
      var Pname = $(this).find('name').text(); 
      $('<div class="items" id="link">    </div>').html('<Strong>'+name+'</Strong>').appendTo('#content'); 
      if(Pname = $(xml).find('name').each(function(){ 
      var city = $(this).find('city').text(); 
      var full = name + ","+city; 
      $('<div class="items" id="link"></div>').html('<a href="'+city+'">'+city+'</a>').appendTo('#content'); 
      }); 

的格式,我只是不能再循环一次,以便我可以找到同名但不同城市的人,因此根据他们将他们放在一起不同的位置。 任何帮助,将不胜感激。在此先感谢..

回答

0

您应该可以修改这个在您的成功函数工作:

var xmlString = "<Info><detail><country>US</country><name>Edward</name><city>San bruno</city> </detail><detail><country>US</country><name>Edward</name><city>Charleston </city> </detail><detail><country>US</country><name>John</name><city>Charleston </city> </detail><detail><country>US</country><name>John</name><city>Dallas</city></detail></Info>", 
xmlDoc = $.parseXML(xmlString), 
$xml = $(xmlDoc), 
$name = $xml.find("name"); 

var prevName = ""; 

$name.each(function() { 
    var currNode = $(this); 
    var currName = currNode.text(); 

    if (currName != prevName) { 
     document.write(currName + "<br />"); 
     document.write(currNode.next().text() + "<br />"); 
     prevName = currName; 
    } else { 
     document.write(currNode.next().text() + "<br />"); 
    } 
}); 

的jsfiddle:http://jsfiddle.net/jensbits/Z6Bst/

+0

这假定对于给定的名称详细节点将是相邻的。这可以假设为XML? – steveax

+0

@steveax您需要询问OP。他们在问题中发布的示例应包含任何边缘案例。在这种情况下,只能通过问题中发布的内容进行分析。 –

+0

是的,对不起,我忘了包含'@用户名',但我的意见是针对OP。 @RagsonWeb可以确定给定名称的细节节点会相邻吗? – steveax