2012-10-21 30 views
1

我想解析一個簡單的xml文檔,在JS中使用DOM解析器,但解析器無法加載文件。我使用受歡迎的網站中的示例,我認爲這會起作用。JavaScript中的DOM解析器(不使用web服務器測試)

我所有的文件都存儲在本地compter中(不使用web服務器...使用file:///而不是http://)。

我的代碼是

<html> 
<head> 
</head> 
<body> 
<script> 
<script type="text/javascript"> 
if (window.XMLHttpRequest) 
    { 
    xhttp=new XMLHttpRequest(); 
    } 
else // IE 5/6 
    { 
    xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xhttp.open("GET","chinese.xml",false); 
xhttp.send(); 
xmlDoc=xhttp.responseXML; 

x=xmlDoc.documentElement.childNodes; 
for (i=0;i<x.length;i++) 
{ 
document.write(x[i].nodeName); 
} 
</script> 
</body> 
</html> 

我的兩個HMTL和XML文件位於同一文件夾中。我不明白爲什麼這不工作

XML文件

<!DOCTYPE menu SYSTEM "chinese.dtd"> 
<menu> 
    <dish> 
    <name>Chicken Sweetcorn Soup</name> 
    <price>1.60</price> 
    </dish> 
    <dish> 
    <name>Spring Roll</name> 
    <price>1.50</price> 
    </dish> 
    <dish> 
    <name>Special Satay</name> 
    <ingredients>King Prawn, Chicken, Beef with Vegetables</ingredients> 
    <price>4.50</price> 
    </dish> 
    <dish> 
    <name>Barbecued Spare Ribs</name> 
    <price>3.99</price> 
    </dish> 
    <dish> 
    <name>Sweet and Sour Pork</name> 
    <style>Cantonese</style> 
    <price>4.49</price> 
    </dish> 
</menu> 
+0

我沒有看到任何嘗試在這裏解析任何東西。如果你使用本地文件系統,那麼你的瀏覽器可能會阻止XHR運行,因爲它不認爲你的本地文件系統是可信的。 – Pointy

+0

@ R.S也許IE與這無關......該代碼會在任何瀏覽器中做同樣的事情 – Pointy

+0

是的,我認爲是一樣的。我相信我非常基本的一些東西,但我是DOM新手,我看不到這是什麼。我正在使用Chrome瀏覽器 – mariosk89

回答

2

大多數瀏覽器(Firefox的除外,因爲據我所知)不支持加載存儲在計算機上的本地XML文件(即由於安全原因,使用AJAX的文件不是使用Web服務器提供的)。因此,如果您在Chrome中本地測試腳本(使用file:///),則該腳本無法運行。

只需使用Firefox測試腳本或將其上傳到服務器(我建議使用XAMPP)。

+0

您是否可以閱讀我的帖子,並使用我的帖子底部的示例代碼在Chrome中試用示例@ http://www.w3schools.com/dom/tryit.asp?filename=try_dom_parsertest,並告訴我它是否無效並且如果你是..那投票我plz將它加回 –

+0

顯然你的例子不會在Chrome中工作(當不在服務器上執行時),因爲它也試圖加載本地XML文件。我低估了你的答案,因爲它不能解決問題,並可能會混淆他人。 – Aletheios

+0

@Aletheios ...你的權利,它不會沒有網絡服務器的工作。但是他們提到的問題(或者之前的10次編輯),這不是在Web服務器上運行,而是在本地計算機上運行? –