我有一个可行的脚本,可以通过Javascript更新xml文件,或者至少我刚才这么认为。
function populate()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","database.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
newel=xmlDoc.createElement("Session");
newtext=xmlDoc.createTextNode("Red");
newel.appendChild(newtext);
x=xmlDoc.getElementsByTagName("root");
x[0].appendChild(newel);
for (i=0;i<x[0].childNodes.length;i++)
{
if (x[0].childNodes[i].nodeType==1)
{
document.write(x[0].childNodes[i].nodeName);
document.write(": ");
document.write(x[0].childNodes[i].childNodes[0].nodeValue);
document.write("<br />");
}
}
}
如果我将x=xmlDoc.getElementsByTagName("root");
更改为,例如x=xmlDoc.getElementsByTagName("gallery");
文件中没有任何反应,那么它很清楚它与xml文件有联系。但它不会在xml文件中打印任何内容,我可以在Web浏览器中或在下载xml文件时看到,这让我想知道这实际上是如何工作的。我正试图在我正在建立画廊使用xml文件的网站上学习这个。
此时我在xml文档中只有<root></root>
,因此在那里复制并不多,这就是我所获得的所有javascript代码,因为我在旁边的测试网站上执行此操作主要项目。
有人可以解释或给我一个正确方向的推动,以便如何处理这个问题。
答案 0 :(得分:0)
您需要为就绪状态更改添加处理程序,并在此处放置用于处理响应的代码。
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200){
xmlDoc=xmlhttp.responseXML;
newel=xmlDoc.createElement("Session");
newtext=xmlDoc.createTextNode("Red");
newel.appendChild(newtext);
x=xmlDoc.getElementsByTagName("root");
x[0].appendChild(newel);
for (i=0;i<x[0].childNodes.length;i++) {
if (x[0].childNodes[i].nodeType==1){
document.write(x[0].childNodes[i].nodeName);
document.write(": ");
document.write(x[0].childNodes[i].childNodes[0].nodeValue);
document.write("<br />");
}
}
}
}