【问题标题】:How to filter an xml file using JavaScript如何使用 JavaScript 过滤 xml 文件
【发布时间】:2021-03-28 16:13:46
【问题描述】:

下面的代码获取一个 XML 文件并将其放入一个 HTML 表中。我需要此表仅包含成绩为 A 但不确定如何过滤此表的学生,因此它目前只获取所有学生的姓名、年龄和成绩,无论他们取得的成绩如何。有人可以告诉我如何只将获得 A 的学生添加到表格中吗?

HTML 文件

<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
  border-collapse:collapse;
}
th, td {
  padding: 5px;
}
</style>
</head>
<body>
    
<table id="Advanced Web Development"></table>

<script>
function loadXMLDoc() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      myFunction(this);
    }
  };
  xmlhttp.open("GET", "Dom_file2.xml", true);
  xmlhttp.send();
}
function myFunction(xml) {
  var i;
  var xmlDoc = xml.responseXML;
  var table="<tr><th>NAME</th><th>AGE</th><th>GRADE</th></tr>";
  var x = xmlDoc.getElementsByTagName("STUDENT");
  for (i = 0; i <x.length; i++) {
    table += "<tr><td>" +
    x[i].getElementsByTagName("NAME")[0].childNodes[0].nodeValue +
    "</td><td>" +
    x[i].getElementsByTagName("AGE")[0].childNodes[0].nodeValue +
    "</td><td>" +
    x[i].getElementsByTagName("GRADE")[0].childNodes[0].nodeValue +
    "</td></tr>";
  }
  document.getElementById("Advanced Web Development").innerHTML = table;
}
loadXMLDoc()
</script>

</body>
</html>

XML 文件

<CLASS ID="Advanced Web Development">
    <STUDENT>
        <NAME>Tom</NAME>
        <AGE>19</AGE>
        <HEIGHT>1.3</HEIGHT>
        <SEX>M</SEX>
        <GRADE>B</GRADE>
    </STUDENT>
    <STUDENT>
        <NAME>Dick</NAME>
        <AGE>29</AGE>
        <HEIGHT>1.1</HEIGHT>
        <SEX>M</SEX>
        <GRADE>A</GRADE>
    </STUDENT>
    <STUDENT>
        <NAME>Harry</NAME>
        <AGE>39</AGE>
        <HEIGHT>1.5</HEIGHT>
        <SEX>M</SEX>
        <GRADE>C</GRADE>
    </STUDENT>
    <STUDENT>
        <NAME>Mary</NAME>
        <AGE>30</AGE>
        <HEIGHT>1.1</HEIGHT>
        <SEX>F</SEX>
        <GRADE>A</GRADE>
    </STUDENT>
    <STUDENT>
        <NAME>Tim</NAME>
        <AGE>23</AGE>
        <HEIGHT>1.5</HEIGHT>
        <SEX>M</SEX>
        <GRADE>A</GRADE>
    </STUDENT>
</CLASS>

【问题讨论】:

    标签: javascript html xml dom


    【解决方案1】:
    if (x[i].getElementsByTagName("GRADE")[0].childNodes[0].nodeValue === 'A') {
       // add it to your output
       table += ...
    }
    

    只写一个 if 语句,只在成绩为 A 时执行逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 2013-04-10
      • 1970-01-01
      相关资源
      最近更新 更多