首页 > 解决方案 > 使用javascript更改xml的revsere顺序

问题描述

我想颠倒我的 xml 文档文件中的顺序列表可能是我做错了任何人都可以解释为什么这是我使用循环和在该循环中 foreach 来颠倒顺序但不起作用

<CATALOG>
<CD>
<TITLE>Greatest Hits</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary Moore</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>
<CD>
<TITLE>Eros</TITLE>
<ARTIST>Eros Ramazzotti</ARTIST>
<COUNTRY>EU</COUNTRY>
<COMPANY>BMG</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1997</YEAR>
</CD>
</CATALOG>

我的 javascript

function myFunction(xml) {
  var i;
  var xmlDoc = xml.responseXML;
  var table="";
  var x = xmlDoc.getElementsByTagName("CD");
  for (i = 0; i < x.length; i++) { 
    var show = 
    x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue;
    show.reverse();
    show.forEach(myfun);
    function myFun(xt){
    table = table + xt ;
    }
  }
  document.getElementById("demo").innerHTML = table;
}

这应该显示来自 Eros Ramazzotti、Gary Moore、Dolly Parton 的第一个相反顺序,谢谢。

标签: javascriptxml

解决方案


您是否正在考虑反转 CD 节点。如果是,你可以这样做

var nodes = xmlDoc.getElementsByTagName("CD");
var newDoc = parser.parseFromString("<CATALOG></CATALOG>","text/xml");
var catalog = newDoc.childNodes[0];
for (var i = nodes.length - 1; i >= 0; --i) {
  catalog.appendChild(nodes[i]);
}
console.log(newDoc);

推荐阅读