如何使用 JavaScript 过滤 xml 文件

Posted

技术标签:

【中文标题】如何使用 JavaScript 过滤 xml 文件【英文标题】:How to filter an xml file using JavaScript 【发布时间】: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>

【问题讨论】:

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

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

【讨论】:

以上是关于如何使用 JavaScript 过滤 xml 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 XML 文件中过滤元素

如何使用 xslt 从 xml 文档中过滤掉任意节点

如何使用 Javascript 加载 XML 文件内容?

按ID过滤XML文件

如何使用 JavaScript 中的索引过滤数组数组? [复制]

如何使用 Javascript 在 HTML 文件中显示 XML 内容