3

我正在设计一个在线调查,其中一个主要功能是问题存储在外部 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 的安全设置。是这样吗,还是还有更多?

谢谢你的帮助。

4

1 回答 1

0

在 IE 上,您可以直接在 xml doc 上使用 XPATH,其他浏览器通过创建 xpath 解析器来实现

因此,选择所有“主要”元素就像:

xmlDoc.selectNodes("//major")

但是一旦你有了那个 [0] 索引选择器,你就可以更有效地做到这一点:

xmlDoc.selectSingleNode("//major")

两者的结果是完全不同的(除了性能增益)

selectNodes 将返回节点列表(该列表不是 dom 部分) selectSingleNode 将返回第一个节点(不是列表)

但是,您可以使用 xpath 在一个命令中进行最终选择,例如:

xmlDoc.selectSingleNode("//major/*[1]/*[9]/*[0]")

/*[n] 表示法是可以的,但如果它们是唯一的或两者的组合,您可以使用节点名称

拥有节点,您可以根据需要添加 .noValue、.text、.textContent、.nodeName

于 2012-04-21T02:46:39.653 回答