如何对XML数据进行排序?

时间:2018-10-18 10:49:54

标签: javascript jquery html xml get

我有一组列表项,它们希望在页面加载时从高到低自动显示。理想情况下使用jquery或javascript。

这是我的代码。

data.xml

<cd>
  <presantage>10%</presantage>
</cd>
<cd> 
  <presantage>50%</presantage>
</cd>
<cd>
  <presantage>5%</presantage>
</cd>

用于显示xml数据

$(document).ready(function(){
    $.ajax({
        type:"GET",
        url:"data.xml",
        dataType:"xml",
        success:xmlParser2
    });
   });
   function xmlParser2(xml){
    xml = $(xml).children();
    $(xml).children().each(function () {

       let tag = $(this).prop("tagName");
        let presantage = '<div>' + $(this).find("presantage").text() + '</div>';

        let html = '<li>'+ (presantage)+'</li>';

            $(".list").append(html);
    });
}

对于订单元素

var ul = $(".list:first");
var arr = $.makeArray(ul.children("li"));

arr.sort(function(a, b) {
    var textA = +$(a).text();
    var textB = +$(b).text();

    if (textA < textB) return -1;
    if (textA > textB) return 1;

    return 0;
});

ul.empty();

$.each(arr, function() {
    ul.append(this);
});

html

<ul class="list"></ul>

Plunker

2 个答案:

答案 0 :(得分:2)

尝试一下:

 function xmlParser2(xml){
   var obj = {};

xml = $(xml).children();
$(xml).children().each(function () {

    obj[$(this).find("presantage").text().replace('%', '')]  = $(this).find("presantage").text();




});

for(var k in obj ){
    let html = '<li>'+ (obj[k])+'</li>';

    $(".list").append(html);
}

// alert(JSON.stringify(obj)) 
}

答案 1 :(得分:0)

这是一个简单的JS(纯)代码,用于按百分比顺序对百分比进行排序。

var doc = new DOMParser().parseFromString(xml, "application/xml");
var elements = doc.getElementsByTagName('presantage');
var percentages = [];
for (let i = 0; i < elements.length; i++) {
    percentages.push(parseFloat(elements[i].textContent));
}
percentages.sort((a, b) => b - a); // array [50, 10, 5]

此后,您可以对percentages进行排序循环并创建列表html。

注意:如果您需要按升序排序,请执行a - b