javascript - 如何使用 JavaScript 迭代 XML 文件并在 HTML 网页中显示数据?

标签 javascript html xml

我想要迭代 XML 文件并在 HTML 网页上显示字段中的数据。目前,我的代码仅显示 XML 文件中的第一个条目。

这是我当前的 HTML/JS 代码,它显示 XML 文件中的第一个条目。这是一个 html 文件:

<script>
displayCD(0);

function displayCD(i) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            myFunction(this, i);
        }
    };
    xmlhttp.open("GET", "data.xml", true);
    xmlhttp.send();
}

function myFunction(xml, i) {
    var xmlDoc = xml.responseXML; 
    x = xmlDoc.getElementsByTagName("contact");
    document.getElementById("showCD").innerHTML =
    "Name: " +
    x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue +
    "<br>Email: " +
    x[i].getElementsByTagName("email")[0].childNodes[0].nodeValue +
    "<br>Phone: " + 
    x[i].getElementsByTagName("phone")[0].childNodes[0].nodeValue;
}


</script>
<div id='showCD'></div><br>

这是我的 XML 代码,位于单独的文件 data.xml 中:

<?xml version="1.0" encoding="UTF-8"?>
<entries>
  <contact>
    <name>a</name>
    <email>b</email>
    <phone>1234</phone>
  </contact>
  <contact>
    <name>c</name>
    <email>d</email>
    <phone>5678</phone>
  </contact>
</entries>

当前输出:

名称:a

电子邮件:b

电话:1234

预期输出:

名称:a

电子邮件:b

电话:1234

姓名:c

电子邮件:d

电话:5678

最佳答案

你只需要循环x (代表所有 <contact> 标签:

x = xmlDoc.getElementsByTagName("contact");

for (count = 0; count < x.length; count++) {
  document.getElementById("showCD").innerHTML +=
    "Name: " +
    x[count].getElementsByTagName("name")[0].childNodes[0].nodeValue +
    "<br>Email: " +
    x[count].getElementsByTagName("email")[0].childNodes[0].nodeValue +
    "<br>Phone: " + 
    x[count].getElementsByTagName("phone")[0].childNodes[0].nodeValue;
}

附注正如有人在评论中提到的,使用 XSLT 可能是完成此任务的一种更简洁的方法,尽管如果您以前没有使用过它,会有一些学习曲线。

关于javascript - 如何使用 JavaScript 迭代 XML 文件并在 HTML 网页中显示数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60988963/

相关文章:

javascript - 从 JS 对象文字中的异步函数初始化的字段 : will they break concurrency?

javascript - .on ("change"不适用于partialView

javascript - 使用 javascript 和 css 用鼠标选择文本的粗体部分

html - 图像在 Firefox 中完全不对齐,但在 Chrome 中没有

java - java中解析xml字符串

javascript - Hook 到 XMLHttpRequest 打开和发送方法

javascript - 如何检测页面是否在顶部?

javascript - 无法在 JS 中设置 .color 属性

php - AJAX readyState 在我的代码中没有更改为 4

C# 将 XML 解析为带有子元素的对象