Sorting with getElementsByTagName
Sorting with getElementsByTagName
我想解析一个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>
更新:我的脚本看起来像这样:
<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>
我让我的听写器这样工作。我的问题是,我怎么能列出数字(或任何额外的节点值)旁边的名称(不使用表),我怎么能设置条件/创建子列表在这样的列表(如果我不能,请帮助我创建一个列表,我可以),我将感谢您的帮助!提前感谢!
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 />");
我建议你使用Json而不是XML。
然后你可以使用javascript sort()方法来排序JSON使用答案,你可以在这里找到:排序数组对象的单键与日期值
相关文章:
- 没有找到相关文章