带有HTML显示XML数据的空白页面

时间:2015-04-04 08:19:19

标签: javascript jquery html css xml

我有一个html文档,它创建一个包含数据的表,由xml存档提供。在adobe括号的实时预览中,我可以看到页面和数据。

但是,当我尝试在某些浏览器中打开时,如IE,Firefox或Chrome,页面显示,只是空白。

这里是html代码的一部分,下面是xml的代码。

这是html代码

<!DOCTYPE html>
<html>
<head>
<style>

table { border-collapse: collapse; font-family: Futura, Arial, sans-serif; border: 1px solid #777; }
caption { font-size: larger; margin: 1em auto; }
th, td { padding: .65em; }
th, thead { background: #000; color: #fff; border: 1px solid #000; }
tr:nth-child(odd) { background: #ccc; }
tr:hover { background: #aaa; }
td { border-right: 1px solid #777; }

    </style>
</head>
<body>
<script>
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","prueba_new.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

document.write("<table><tr><th>CardN</th><th>CardC</th><th>CardE</th><th>CardNe</th></tr>");
var x=xmlDoc.getElementsByTagName("CCard");
for (i=0;i<x.length;i++)
  { 
  document.write("<tr><td>");
  document.write(x[i].getElementsByTagName("CardN")[0].childNodes[0].nodeValue);
  document.write("</td><td>");
  document.write(x[i].getElementsByTagName("CardC")[0].childNodes[0].nodeValue);
      document.write("</td><td>");
  document.write(x[i].getElementsByTagName("CardE")[0].childNodes[0].nodeValue);
      document.write("</td><td>");
  document.write(x[i].getElementsByTagName("CardNe")[0].childNodes[0].nodeValue);
  document.write("</td></tr>");
  }
document.write("</table>");
</script>
</body>
</html>

这是xml代码,当然是实际的xml文件,包含数百个条目。

<?xml version="1.0"?>
<numbers>
<CCard>
<CardNe>Volkervun</CardNe>
<CardN>10000034999</CardN>
<CardC>Red Team</CardC>
<CardE>Volker.vcd</CardE>
</CCard>
<CCard>
<CardNe>Lady Mars</CardNe>
<CardN>10009899899</CardN>
<CardC>Blue Team</CardC>
<CardE>LadyM.vcd</CardE>
</CCard>
</numbers>

我尝试了几件事,但都没有。 那个空白页的一些想法?

1 个答案:

答案 0 :(得分:1)

如果只是通过双击计算机上的.html文件在浏览器中打开文件,则可以在file://协议下打开它。由于浏览器跨源沙盒,XML文件的GET请求将失败: file://下的每个页面都被视为一个单独的域,因此您的.html页面不允许阅读你的.xml文件。

它适用于Brackets,因为Live Preview会加载一个简单的本地Web服务器,因此您可以在浏览器中以http://协议查看您的页面。要在没有Brackets的情况下复制效果,请运行其他本地Web服务器。

我个人最喜欢的简单网络服务器是serf - 如果你的计算机上安装了NodeJS,你可以在命令行输入npm install -g serf来安装它。然后,只需在.html文件所在的任何文件夹中键入serf即可启动服务器。

相关问题