0

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>
4

3 に答える 3

1

これが必要かどうかわからない場合は、この XML をオブジェクトの配列に変換し、目的の基準に基づいてその配列を並べ替えることができます。次に、この並べ替えられたオブジェクトの配列からの情報を表示できます。通常、並べ替えられた XML は必要ありませんが、情報のみが並べ替えられます。

に変換する方法については、この投稿をご覧くださいXMLassociative array

次に、定義した比較関数を使用して JavaScript ソート関数を適用できます。

于 2013-07-12T21:16:58.567 に答える
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()));
});
于 2013-07-12T21:51:10.567 に答える
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/

于 2013-07-12T21:49:21.460 に答える