如何对从webservice返回的xml进行排序

时间:2013-07-12 21:10:56

标签: javascript xml

我正在开发一个项目,我只能使用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>

3 个答案:

答案 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

http://jsfiddle.net/5Cbvc/

答案 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()));
});