2011-12-14 79 views
0

我有一個可操作的腳本來更新通過JavaScript的xml文件,或者至少我以前認爲如此,直到剛纔。關於填充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文件的網站學習這一點。

在這一點上,我只有<root></root>在xml文檔中,所以沒有太多複製那裏,這是我得到的所有JavaScript代碼,因爲我在主項目旁邊的測試網站上做這個。

有人可以請解釋或給我一個正確的方向推動如何繼續下去。

+0

哪部分不工作?我似乎無法解決您的問題... – Blender 2011-12-14 00:48:50

+0

當我將腳本添加到我的頁面時,我得到的document.write輸出沒有任何問題。但是,當我檢查XML文件,它仍然是空的。這就像它把所有東西都放在那裏,但從不保存數據。 – 2011-12-14 00:54:04

回答

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