2015-03-16 2 views
1

У меня есть структура XML и значение даты. Мне нужно отсортировать и получить последний узел ниже xml. Я ищу нисходящую сортировку ниже xml на основе значения StartDate.Как отсортировать XML на основе значений даты с помощью jQuery

<PriceList> 
 
     <PriceInfo> 
 
     <Timestamp>2015-02-19T06:33:10.255</Timestamp> 
 
     <Value xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" >3</Value> 
 
     <Unit>eur/kwh</Unit> 
 
     <StartDate>2015-02-16T00:00:00</StartDate> 
 
     <EndDate>2015-02-16T00:00:00</EndDate> 
 
     <BaseAmount xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" /> 
 
     <BaseAmountUnit /> 
 
     </PriceInfo> 
 
     <PriceInfo> 
 
     <Timestamp>2015-02-11T06:43:10.255</Timestamp> 
 
     <Value xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" /> 
 
     <Unit>eur/kwh</Unit> 
 
     <StartDate>2015-02-11T00:00:00</StartDate> 
 
     <EndDate>2015-02-16T00:00:00</EndDate> 
 
     <BaseAmount xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" >4</BaseAmount> 
 
     <BaseAmountUnit /> 
 
     </PriceInfo> 
 
     <PriceInfo> 
 
     <Timestamp>2015-02-10T06:33:10.255</Timestamp> 
 
     <Value xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" >5</Value> 
 
     <Unit>eur/kwh</Unit> 
 
     <StartDate>2015-02-10T00:00:00</StartDate> 
 
     <EndDate>2015-02-16T00:00:00</EndDate> 
 
     <BaseAmount xsi:nil=\"true\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" /> 
 
     <BaseAmountUnit /> 
 
     </PriceInfo> 
 
    </PriceList>

Я написал это так,

var result = $(priceList).find("PriceInfo").sort(function (a, b) { 
 
        debugger; 
 
        var textA = $(a).find('StartDate').text(); 
 
        var textB = $(b).find('StartDate').text(); 
 

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

+0

Вы пробовали что-нибудь ?? –

+0

Я написал этот код, var result = $ (priceList) .find ("PriceInfo"). Sort (function (a, b) { отладчик; var textA = $ (a) .find ('StartDate'). текст();. вар textB = $ (б) .find ('StartDate') текст(); , если (textA textB) возврата -1; возврата 0; }); –

ответ

0
$.get('Pricelist.xml', function(PriceList){  
    var priceInfo= $(PriceList).find('PriceInfo'); 

priceInfo.sort(function(a, b){ 
    return $(a).data('StartDate').localeCompare($(b).data('StartDate')); 
    }); 

    priceInfo.each(function(i,v){ 
    alert($(v).attr('StartDate')); 
    }); 
}); 
0

Ниже Daniel Lidström ответ применяется в вышеуказанном контексте, где boolean < > Сравнение используется для объектов Date.

var result = $xml.find("PriceInfo").sort(function (a, b) { 
    //debugger; 
    var textA = $(a).find('StartDate').text(); 
    var dateA = new Date(textA); 

    var textB = $(b).find('StartDate').text(); 
    var dateB = new Date(textB); 

    if (dateA < dateB) return +1; 
    if (dateA > dateB) return -1; 

    return 0; 
}); 

Fiddle

Смежные вопросы