我正在设计一个在线调查,其主要特点之一是问题存储在外部 XML 文件中,每次都会加载随机问题。虽然我的代码在 Firefox 中运行良好,但当我尝试在 Internet Explorer 8 中加载页面时出现“访问被拒绝”错误。我已将问题隔离到以下代码部分:
//Import the XML File
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5*/
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//Import XML
xmlhttp.open("POST","Personalized Tour/questions.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
特别是,错误似乎是在 xmlhttp.open 上抛出的。我查看了其他几个类似问题的网站,它们似乎表明存在某种域错误触发了 IE8 的安全设置。是这种情况,还是有更多的原因?
感谢您的帮助。
最佳答案
在 IE 上你可以直接在 xml 文档上使用 XPATH,其他浏览器通过创建一个 xpath 解析器来实现
所以,选择所有“主要”元素就像:
xmlDoc.selectNodes("//major")
但是一旦你有了 [0] 索引选择器,你就可以更有效地完成它:
xmlDoc.selectSingleNode("//major")
两者的结果完全不同(除了性能提升之外)
selectNodes 将返回节点列表(该列表不是 dom 部分) selectSingleNode 将返回第一个节点(不是列表)
但是您可以使用 xpath 在一个命令中完成最终选择,例如:
xmlDoc.selectSingleNode("//major/*[1]/*[9]/*[0]")
/*[n] 符号是可以的,但如果它们是唯一的或两者的组合,您可以使用节点名称
有了节点,您可以根据需要添加 .noValue、.text、.textContent、.nodeName
关于javascript - 在 IE8 中使用 xmlhttp 加载 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5421986/