有人能告诉我如何对包含数字数据的XML文件以及存储在单独标签中的字符串数据进行排序吗?例如,我有一个Charges(数字)和Network(字符串)元素。现在我想根据Javascript中的Charges对XML文件进行排序。
任何简单的例子?
<Results>
<network>Wateen</network>
<speed>2048</speed>
<type>Fixed</type>
<install_charges>500</install_charges>
<charges>20</charges>
</Results>
<Results>
<network>PTCL</network>
<speed>4096</speed>
<type>Fixed</type>
<install_charges>0</install_charges>
<charges>2000</charges>
</Results>
<Results>
<network>PTCL</network>
<speed>4096</speed>
<type>Fixed</type>
<install_charges>0</install_charges>
<charges>200</charges>
</Results>
<Results>
<network>PTCL</network>
<speed>4096</speed>
<type>Fixed</type>
<install_charges>0</install_charges>
<charges>3000</charges>
</Results>
如何根据charges
对上述XML进行排序?如果它是非XSL方法也会很好,因为XSL会给你带来很多麻烦。
答案 0 :(得分:0)
如果您不喜欢使用XSL,可以创建一个包含Results-elements的数组,并使用数组的本机排序方法:
<Results>
<network>Wateen</network>
<speed>2048</speed>
<type>Fixed</type>
<install_charges>500</install_charges>
<charges>20</charges>
</Results>
<Results>
<network>PTCL</network>
<speed>4096</speed>
<type>Fixed</type>
<install_charges>0</install_charges>
<charges>2000</charges>
</Results>
<Results>
<network>PTCL</network>
<speed>4096</speed>
<type>Fixed</type>
<install_charges>0</install_charges>
<charges>200</charges>
</Results>
<Results>
<network>PTCL</network>
<speed>4096</speed>
<type>Fixed</type>
<install_charges>0</install_charges>
<charges>3000</charges>
</Results>
<script>
var nodeArray=[];
var nodeList=document.getElementsByTagName('Results')
//fill array
for(var i=0;i<nodeList.length;++i)
{
nodeArray.push(nodeList[i]);
}
//sort array
nodeArray.sort(function(a,b)
{
return (
Number(a.getElementsByTagName('charges')[0].firstChild.data)
-
Number(b.getElementsByTagName('charges')[0].firstChild.data)
);
});
//reorder nodes
for(var i=nodeArray.length-1;i>=0;i--)
{
nodeArray[i]
.parentNode
.insertBefore(nodeArray[i],
nodeArray[i].parentNode.getElementsByTagName('Results')[0]);
}
</script>