-1

我想解析一个 xml 文件并以不同于它们在 xml 中出现的顺序列出元素。每个子元素都有一个名称和一个数字值,我想列出名称但按数字值的顺序排列。xml 文件看起来与此类似:

 <stories>
    <story>
      <name>fast</name>
      <number>1000</number>
    </story>
    <story>
      <name>bomb</name>
      <number>2</number>
    </story>
    <story>
      <name>descend</name>
      <number>500</number>
    </story>
    <story>
      <name>A</name>
      <number>1</number>
    </story>
    <story>
      <name>can</name>
      <number>40</number>
    </story>
    <story>
      <name>extremely</name>
      <number>10000</number>
    </story>
 </stories>

更新:我的脚本看起来像这样 atm:

<script type="text/javascript">
var xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
testOpen = xmlhttp;
testOpen.open("GET", "test.xml", false);
xmlhttp.send();
testDoc = testOpen.responseXML;
stories = testDoc.getElementsByTagName("story");
function display(){
    var arrayStory = Array.prototype.slice.call(stories, 0);
    arrayStory.sort(function(a, b){
        return a.getElementsByTagName("number")[0].firstChild.nodeValue - b.getElementsByTagName("number")[0].firstChild.nodeValue;
    });
    document.getElementById("show").innerHTML = arrayStory.map(function(story){
        return story.getElementsByTagName("name")[0].firstChild.nodeValue;
    }).join("<br>");
};
</script>

我的 listorder 以这种方式工作。我的问题是,我如何在名称旁边列出数字(或任何其他节点值)(不使用表格)以及如何在这样的列表中设置条件/创建子列表(如果我不能,请帮我创建我可以的清单),我会很感激你的帮助!提前致谢!

4

2 回答 2

0

这段display代码应该这样做:

var arr = [],
    l = stories.length;
for (var i=0; i<l; i++)
    arr.push( {
        story: stories[i],
        number: parseInt(stories[i]
                           .getElementsByTagName("number")[0]
                           .firstChild.nodeValue, 10)
        // seriosly, an attribute on the <story> element is more appropriate
    } );
arr.sort(function(a, b) {
    return a.number - b.number;
});
document.getElementById("show").innerHTML = arr.map(function(o) {
    return o.story.getElementsByTagName("name")[0].firstChild.nodeValue;
}).join("<br />");
于 2013-06-18T13:26:58.000 回答
-2

我建议您使用 Json 而不是 XML。

然后,您可以使用 javascript sort() 方法使用您可以在此处找到的答案对 JSON 进行排序:Sort array of objects by single key with date value

于 2013-06-18T12:38:24.527 回答