2014-09-21 38 views
0

我有一個html代碼,應該創建一個xmlDoc對象,從文件中讀取XML代碼,獲取節點的值並將其打印在屏幕上。但是,下面的代碼被執行但不讀取該值。我所得到的只是空串。我試圖.firstChild,結果是一樣的:如何獲取XML文件中節點的值。不工作代碼

<text> is :) 

之間「<文本>和‘是:)’我希望‘我的孩子沒有1’的任何幫助感謝

。 html代碼:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test html</title> 
    <script src="loadxmldoc.js"></script> 
</head> 
<body> 
    <script> 
     var xmlDoc = loadXMLDoc("test_xml.xml"); 
     var x = xmlDoc.getElementsByTagName("child")[0].childNodes[0]; 
     var txt = x.nodeValue; 
     document.write("&lt;txt&gt; is " + txt + " :)"); 
    </script> 
</body> 
</html> 

XML test_xml.xml代碼:

<?xml version="1.0" encoding="UTF-8" ?> 
<root> 
    <children> 
     <child id="1"> 
      <txt>My child no 1.</txt> 
     </child> 
     <child id="2"> 
      <txt>My child no 2.</txt> 
     </child> 
     <child id="3"> 
      <txt>My child no 3.</txt> 
     </child> 
     <child id="4"> 
      <txt>My child no 4.</txt> 
     </child> 
    </children> 
</root> 

和loadXMLD oc函數在loadxmldoc.js文件中:

function loadXMLDoc(filename) { 
    if (window.XMLHttpRequest) { 
     xhttp=new XMLHttpRequest(); 
    } else { // code for IE5 and IE6 
     xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xhttp.open("GET",filename,false); 
    xhttp.send(); 
    return xhttp.responseXML; 
} 
+0

您是否有一個提供該文件的Web服務器,或者您是否嘗試直接從本地文件系統加載文件? – Tomalak 2014-09-21 07:23:41

+0

我在MacBookPro上啓用了PHP/MySql服務器,並且所有文件都通過網絡瀏覽器從服務器加載。另外,所有文件都在我的本地服務器上。 – Celdor 2014-09-21 09:11:09

回答

0

這不是我的問題的完整答案,但問題部分解決。下面的代碼工作,但我必須使用getElementsByTagName函數來獲取我想避免的html標記,並使用firstChild,例如。無論如何,這是什麼工程。

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test html</title> 
    <script src="loadxmldoc.js"></script> 
</head> 
<body> 
    <script> 
     var xmlDoc = loadXMLDoc("test_xml.xml"); 
     var children = xmlDoc.getElementsByTagName("children")[0]; 
     var childn = children.getElementsByTagName("child")[0]; 
     var x = childn.getElementsByTagName("txt")[0]; 
     document.write("&lt;txt&gt; is " + x.firstChild.nodeValue + " :)"); 
    </script> 
</body> 
</html>