我正在开发一个项目,我只能使用jQuery,Javascript和HTML CSS。因此,我复制的XML响应如下,我想根据给定每个位置的星数来排序这个XML响应,顶部的星数最多。
<Locations>
<Location>
<Id>790</Id>
<Name>DHA Office</Name>
<Latitude>31.4737</Latitude>
<Longitude>74.3771</Longitude>
<Distance>0.74</Distance>
<Address>Sector Y</Address>
<City>Lahore </City>
<Subcategory>Convenience Store</Subcategory>
<Appid>1</Appid>
<Stars></Stars>
<Options>2,,,,,,,,,,</Options>
</Location>
<Location>
<Id>729</Id>
<Name>McDonald's</Name>
<Latitude>31.4749</Latitude>
<Longitude>74.3772</Longitude>
<Distance>0.67</Distance>
<Address>486/ B</Address>
<City>Lahore </City>
<Subcategory>Convenience Store</Subcategory>
<Appid>1</Appid>
<Stars>5</Stars>
<Options>3,,,,,,,,,,</Options>
</Location>
<Location>
<Id>732</Id>
<Name>Lahore Zoo</Name>
<Latitude>31.5563</Latitude>
<Longitude>74.3261</Longitude>
<Distance>4.79</Distance>
<Address>92 Mall Road</Address>
<City>Lahore </City>
<Subcategory>Convenience Store</Subcategory>
<Appid>1</Appid>
<Stars>3</Stars>
<Options>6,7,,,,,,,,,</Options>
</Location>
</Locations>
答案 0 :(得分:1)
不确定这是否是您想要的,您可以将此XML转换为对象数组,然后根据您所需的条件对该数组进行排序。然后,您可以显示此排序对象数组中的信息。通常,您不需要排序的XML,只需要对信息进行排序。
请参阅this帖子,了解如何将XML
转换为associative array
。
然后,您可以将JavaScript排序功能应用于defined compare function。
答案 1 :(得分:0)
如何解析xml的插件:https://code.google.com/p/jquery-xml2json-plugin/
则...
var locations = $.xml2json(response);
console.log(locations)
locations.Location.sort(function(a,b){
return parseInt(a.Stars || "0") > parseInt(b.Stars || "0");
});
$.each(locations.Location,function(k,v){console.log(v.Stars);});
输出到控制台:3 5
答案 2 :(得分:0)
您可以在jQuery中使用普通的XML。
var l = $(yourXmlString).find('Location');
l.sort(function(a, b) {
return (
parseInt($(b).children('Stars').first().text()) -
parseInt($(a).children('Stars').first().text()));
});