如何迭代XML文件并使用JavaScript在HTML网页中显示数据?
我想迭代一个XML文件,并在HTML网页上显示字段中的数据。目前,我的代码只显示XML文件中的第一个条目 这是我当前的HTML/JS代码,它显示了XML文件中的第一个条目。这是一个html文件:如何迭代XML文件并使用JavaScript在HTML网页中显示数据?,javascript,html,xml,Javascript,Html,Xml,我想迭代一个XML文件,并在HTML网页上显示字段中的数据。目前,我的代码只显示XML文件中的第一个条目 这是我当前的HTML/JS代码,它显示了XML文件中的第一个条目。这是一个html文件: 显示CD(0); 功能显示CD(i){ var xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=函数(){ if(this.readyState==4&&this.status==200){ myFunction(this,i); }
显示CD(0);
功能显示CD(i){
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
myFunction(this,i);
}
};
open(“GET”,“data.xml”,true);
xmlhttp.send();
}
函数myFunction(xml,i){
var xmlDoc=xml.responseXML;
x=xmlDoc.getElementsByTagName(“联系人”);
document.getElementById(“showCD”).innerHTML=
“姓名:”+
x[i].getElementsByTagName(“名称”)[0].childNodes[0].nodeValue+
“
电子邮件:”+
x[i].getElementsByTagName(“电子邮件”)[0].childNodes[0].nodeValue+
“
电话:”+
x[i].getElementsByTagName(“电话”)[0].childNodes[0].nodeValue;
}
您只需循环x
(它表示所有
标记:
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;
}
x=xmlDoc.getElementsByTagName(“联系人”);
用于(计数=0;计数电子邮件:”+
x[count]。getElementsByTagName(“电子邮件”)[0]。子节点[0]。节点值+
“
电话:”+
x[count].getElementsByTagName(“电话”)[0].childNodes[0].nodeValue;
}
另外,正如有人在评论中提到的,使用XSLT可能是一种更简洁的方法,尽管如果您以前没有使用过XSLT,可能会有一些学习曲线。如果您只是将XML转换为HTML,为什么不使用XSLT?@CD001,IMHO XSLT对一些人来说可能很难学习,它有一个非常不同的范例对于大多数语言来说,理解为什么会发生某些事情并不总是容易的(首先).@NigelRen…也许吧,但这正是它的用途——如果你已经习惯了XML,*耸耸肩*…有趣的是——我妈妈花了几十年时间研究数据库和C,可能忘记了比我知道的更多的东西,她对XML一点也不满意。如果你在研究XML,那么你真的应该不辞辛劳地学习XSLT。有一个初始的学习曲线,但一旦你完成了它,它将比低级的Javscript DOM导航更加简洁和易于维护。谢谢!工作得非常完美。XSLT很可能在目前的水平之上,考虑到我当前的项目是我第一次做XML和Javascript。