使用Ajax和JavaScript过滤XML节点列表

时间:2017-03-28 23:03:22

标签: javascript ajax xml nodelist

我正在尝试使用AJAX和JavaScript构建一个页面,该页面显示按节点值过滤的XML文件的内容。 XML与此类似:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
  </cd>
  <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
  </cd>
  <cd>
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <country>USA</country>
  </cd>
  <cd>
    <title>Still got the blues</title>
    <artist>Gary Moore</artist>
    <country>UK</country>
  </cd>
</catalog>

在XMLHttpRequest之后,CD数据在显示在表中之前转换为数组(nodeList):

function handleXML (xmlData) {
    var data = xmlData;
    var cd = data.getElementsByTagName("cd");
    var arrayCD = Array.prototype.slice.call(cd);

     var table = "<table>";
     table += "<tbody>";

     for ( var i = 0, len = arrayCD.length; i < len; i++ ) {
            table += "<tr>";
            table += "<td>"+ arrayCD[i].getElementsByTagName("title")[0].firstChild.nodeValue +"</td>";
            table += "<td>"+ arrayCD[i].getElementsByTagName("artist")[0].firstChild.nodeValue +"</td>";
            table += "<td>"+ arrayCD[i].getElementsByTagName("country")[0].firstChild.nodeValue +"</td>";
            table += "</tr>";
        }

        table += "</tbody>";
        table += "</table>";

    return table;
}

我的问题是如何过滤表格数据,以便(例如)只显示在英国制作的CD。 我一直在努力解决这个问题,现在开始感到越来越困惑。我想解决方案可能是这样的:

 arrayCD.filter(function(c) {
        var filterC = c.getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue;
        return (filterC = "UK");
    });

(应插入 var arrayCD var table 之间)。但我根本无法使其发挥作用。如果有人能提出答案,我会很高兴。

0 个答案:

没有答案