JavaScript:ActiveXObject MSXML2.XMLHTTP在成功加载时未返回XML。。。?

JavaScript:ActiveXObject MSXML2.XMLHTTP在成功加载时未返回XML。。。?,javascript,xml,internet-explorer,file-uri,Javascript,Xml,Internet Explorer,File Uri,我正在尝试编写一个Internet Explorer 8解决方案,用于通过“文件”协议加载XML,因为我正在构建的站点打算作为包直接发送给用户。我在尝试使用XMLHttpRequest处理此问题时所经历的一切似乎都支持我在网上读到的内容:IE8的XMLHttpRequest实现不喜欢该协议,因此我必须使用ActiveXObject来处理加载 我尝试了各种人的建议,最后得到了似乎能够成功获取文件的代码,因为responseText字段充满了文件的内容。但是,应该保存xml(或其文本表示形式,我读过

我正在尝试编写一个Internet Explorer 8解决方案,用于通过“文件”协议加载XML,因为我正在构建的站点打算作为包直接发送给用户。我在尝试使用XMLHttpRequest处理此问题时所经历的一切似乎都支持我在网上读到的内容:IE8的XMLHttpRequest实现不喜欢该协议,因此我必须使用ActiveXObject来处理加载

我尝试了各种人的建议,最后得到了似乎能够成功获取文件的代码,因为responseText字段充满了文件的内容。但是,应该保存xml(或其文本表示形式,我读过的所有文档都不是很清楚)的responseXML.xml字段始终是空字符串。如何配置ActiveXObject以正确加载XML

另外,有人能解释一下,一旦加载成功,我应该如何使用加载的XML吗?我还没有找到任何文件来解释这一点

以下是我的JavaScript:

function isIE() {
    return navigator.userAgent.lastIndexOf('Trident') > 0;
}

// This block ensures that the XML request occurs in the same domain.
var path = document.location.href;
path = path.substr(0, path.lastIndexOf('/') + 1);

if (isIE() && location.protocol == 'file:') {
    var xmlRequest = new ActiveXObject('MSXML2.XMLHTTP');
    xmlRequest.open('GET', path + 'xml/shared.xml', false);
    xmlRequest.onreadystatechange = useXML;
    xmlRequest.send();

    function useXML() {
        if (xmlRequest && xmlRequest.readyState && xmlRequest.readyState == 4) {
            alert(xmlRequest.responseText);    // displays the file
            alert(xmlRequest.responseXML.xml); // displays nothing
        }
    }
}
这是我的XML文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<shared>
    <page_title>
        Test Page Title
    </page_title>
</shared>

测试页标题

我使用W3XML验证器检查该文件是否存在某种形式的错误。它不是。

这是因为本地文件不是作为text/xml提供的(服务器会这样做),因此IE不会解析它

您可以使用
Microsoft.XMLDOM
对象手动解析它

function useXML() {
        if (xmlRequest && xmlRequest.readyState && xmlRequest.readyState == 4) {
            alert(xmlRequest.responseText);    // displays the file
            xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(xmlRequest.responseText);
            title = xmlDoc.documentElement.getElementsByTagName('page_title')[0];
            alert(title.childNodes[0].nodeValue);
        }
    }

不记得了。。。但是你确定responseXML有一个“xml”属性吗?很确定IE不会提供xml,因为它认为它不安全。我以前编写过自己的XML解析器来处理文本。(不要再拥有它了,不要问了!)-到处都是xmlToObject JS库;非常感谢。出于好奇,有没有办法强迫XMLHTTP对象在不调用XMLDOM的情况下解析文本?这似乎是不必要的开销。