Javascript中的DOM解析器(不使用web服务器进行测试)

Javascript中的DOM解析器(不使用web服务器进行测试),javascript,xml,dom,Javascript,Xml,Dom,我试图在JS中使用DOM解析器解析一个简单的xml文档,但解析器无法加载该文件。我正在使用一个流行网站上的例子,我认为这会奏效 我的所有文件都存储在本地计算机上(不使用web服务器…使用file:///而不是http://) 我的代码是 <html> <head> </head> <body> <script> <script type="text/javascript"> if (window.XMLHttpReques

我试图在JS中使用DOM解析器解析一个简单的xml文档,但解析器无法加载该文件。我正在使用一个流行网站上的例子,我认为这会奏效

我的所有文件都存储在本地计算机上(不使用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>

if(window.XMLHttpRequest)
{
xhttp=newXMLHttpRequest();
}
其他//IE 5/6
{
xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
open(“GET”,“chinese.xml”,false);
xhttp.send();
xmlDoc=xhttp.responseXML;
x=xmlDoc.documentElement.childNodes;
因为(i=0;i大多数浏览器(据我所知,Firefox除外)由于安全原因不支持使用AJAX加载存储在计算机上的本地XML文件(即使用web服务器未提供的文件)。因此,如果您在Chrome中本地测试脚本(使用
文件://
),它将无法工作


只需使用Firefox测试脚本或将其上传到服务器(我建议使用)

这里没有任何解析任何东西的尝试。如果您是从本地文件系统工作的,那么可能是您的浏览器阻止XHR运行,因为它不认为您的本地文件系统是可信的。@ R.S可能IE与此无关……该代码在任何浏览器中都会做同样的事情。我想是一样的。我相信我遗漏了一些非常基本的东西,但我是DOM新手,我看不出这是什么。顺便问一下,我正在使用chrome。你能不能也添加一个XML的示例请在下面尝试我的代码。你能阅读我的帖子并尝试一下chrome中我帖子底部的示例@使用示例代码,然后告诉我它是否有效,如果你是..投反对票的人吗me plz将其添加回显然,您的示例在Chrome中不起作用(如果未在服务器上执行),因为它还试图加载本地XML文件。我对您的答案投了反对票,因为它无法提供问题的解决方案,可能会混淆其他人。@Aletheios…您的权利,如果没有Web服务器,它将不起作用。但是他们提到的问题是在哪里(或者之前的10次编辑)这不是在web服务器上运行,而是在他们的本地计算机上运行?我刚刚读到“解析器无法加载文件”在问题中,我立即想起我曾经在我的一个项目中遇到过同样的问题。所以我猜脚本是在本地计算机上运行的。@Aletheios…而不仅仅是“否决投票”回答,你可能想花一分钟来解释你的推理。原来的问题只是说…XMLDOC=XHTTP.RealSwitML没有加载;没有提供任何循环结构来显示结果。随着问题的发展,我相应地更新了我的答案,并举例说明如何进行测试。在上了解此代码确实有效(但不在他们的本地计算机上),并解释此代码在他们的本地计算机上,没有web服务器。如果您查看下面的注释,我的答案最终是正确的。
<!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>