Javascript 对xml文件中的结果进行排序

Javascript 对xml文件中的结果进行排序,javascript,jquery,xml,sorting,Javascript,Jquery,Xml,Sorting,我目前正在创建一个小应用程序,它要求我从xml文件中读取信息以填充网页 我有一个JavaScript函数,它接受一个参数(mood=String)。该函数使用XMLHttpRequest中的responseText,后者查看xml文件并返回与mood参数对应的所有“程序”: if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { // IE 5/6 xhttp = new ActiveXObje

我目前正在创建一个小应用程序,它要求我从xml文件中读取信息以填充网页

我有一个JavaScript函数,它接受一个参数(mood=String)。该函数使用XMLHttpRequest中的responseText,后者查看xml文件并返回与mood参数对应的所有“程序”:

if (window.XMLHttpRequest) {
    xhttp = new XMLHttpRequest();
} else {    // IE 5/6
    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xhttp.open("GET", "programme_catalog.xml", false); 
xhttp.send(); 
xmlDoc = xhttp.responseXML;

function getContent(mood) {
    $(xmlDoc).find("program").each(function(){
            if ($(this).find('mood').text() == mood) {
            $("#sky-recommender").append(
                '<div id=\'program-holder\'> <div id=\'program-cover\'><img height="130px" width="188px" src=\"' + $(this).find('image').text() + '\" /> </div> <div id=\'program-title\'><p>' + $(this).find('name').text() + 
                '</p></div></div>'
                );
            }
        });
}
if(window.XMLHttpRequest){
xhttp=newXMLHttpRequest();
}否则{//IE 5/6
xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
open(“GET”,“program_catalog.xml”,false);
xhttp.send();
xmlDoc=xhttp.responseXML;
函数getContent(mood){
$(xmlDoc).find(“程序”).each(函数(){
if($(this).find('mood').text()==mood){
$(“#天空推荐者”)。附加(
“”+$(this).find('name').text()
“

” ); } }); }
我的xml文件中的一个条目:

<program id="10"> 
        <name>Foo</name>
        <mood>Bar</mood> 
        <image>/program-images/file-name.123</image> 
    </program> 

福
酒吧
/程序图像/file-name.123
xml文件可以由许多具有相同“语气”的条目组成,但我想限制
getContent
函数只返回按程序id升序排序的5个结果

我猜我可以在
getContent()
的内容周围放置一个for循环,但我不确定如何正确排序

任何帮助都将不胜感激,如果我忘记了一些信息,请随时询问


谢谢:)

您可能可以利用XPath来实现这一点:

...
xhttp.open("GET", "programme_catalog.xml", false); 
xhttp.send(); 
xmlDoc = xhttp.responseXML; 

var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);

var pageStart = 0;
var pageEnd = 5;
var personIterator = xmlDoc.evaluate('//program[./mood[.='Bar'] and position() >= ' + pageStart + ' and position() <= ' + pageEnd, xmlDoc, nsResolver, XPathResult.ANY_TYPE, null );
。。。
open(“GET”,“program_catalog.xml”,false);
xhttp.send();
xmlDoc=xhttp.responseXML;
var nsResolver=xmlDoc.createNSResolver(xmlDoc.ownerDocument==null?xmlDoc.documentElement:xmlDoc.ownerDocument.documentElement);
var pageStart=0;
var pageEnd=5;

var personIterator=xmlDoc.evaluate('//program[./mood[.='Bar']和position()>='+pageStart+'和position())您是要获取文档中的前五个,然后对它们进行排序?还是要获取它们,对它们进行排序,然后选择前五个?在任何一种情况下,对数组进行排序都相当简单:我希望获取它们,对它们进行排序,然后从最高id(最近的)开始选择5个我想使用一个数组,但我不只是从每个结果中获得一个字符串。我得到,在对象的一个字段上排序并不困难:
list.sort((o1,o2)=>o1.name>o2.name?-1:o1.name
表示降序…反向
表示升序。