关于填充xml文件的问题

时间:2011-12-14 00:46:03

标签: javascript xml

我有一个可行的脚本,可以通过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代码,因为我在旁边的测试网站上执行此操作主要项目。

有人可以解释或给我一个正确方向的推动,以便如何处理这个问题。

1 个答案:

答案 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 />");
          }
       }
    }
}