在Chrome中加载本地XML文件

时间:2011-04-07 09:36:52

标签: xml google-chrome loading local

我必须使用HTML5 / CSS3 / JavaScript创建一个项目,并使用XML作为数据提供者。 要求声明它必须与Internet Explorer,Firefox,Safari和Chrome兼容。 我正在开发Firefox,所以工作得很好。 Safari也像对待一样,幸运的是它在新的IE9中也很完美。

我只是遇到了让它在Chrome中运行的问题。 由于Chrome似乎支持许多新的HTML5 / CSS3功能,因此在该浏览器中运行它也不应该太多。 唯一的问题是它拒绝加载XML文件,因为从一开始就需要这样做,所以整个东西都不会加载。

在做了一些研究后,我发现帖子说明Chrome不允许您加载本地XML文件。 它应该在不使用Apache或其他任何东西的情况下脱机工作,那么还有什么方法可以让它工作吗?

我根据所使用的浏览器加载XML的代码片段:

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
    // INTERNET EXPLORER
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        try {
            xmlDoc.async="true";
            xmlDoc.load("exercise1.xml");
        } catch(ex) {
            alert("exception");
            alert(ex.message);
        }
    }else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
    // MOZILLA FIREFOX
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    }else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        // GOOGLE CHROME
        // load xml file
        // ????????
    }else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        // OPERA
        alert("Opera is not supported as of now");
    }else if (browser.toLowerCase().indexOf('safari') > 0){
    // APPLE SAFARI
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    } else {
    // OTHER BROWSERS
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    }

Firefox和Safari使用外部JavaScript加载XML。 我不认为在这里发布代码是非常必要的,因为它在这些浏览器中运行得非常好。

也许我忽略了一些简单的事情,但我已经做了一些谷歌搜索,并尝试了一些在Stackoverflow上找到的代码,我仍然无法让它工作..

1 个答案:

答案 0 :(得分:2)

您可以使用XMLHttpRequest在Chrome中加载XML文件,如下所示: (在Chrome 12.0.742.112上测试)。

    function readxml()
    {
        xmlHttp = new window.XMLHttpRequest();
        xmlHttp.open("GET","test.xml",false);
        xmlHttp.send(null);
        xmlDoc = xmlHttp.responseXML.documentElement;
    }

这是Chrome开发工具中看到的xmlDoc。

readxml() result

确保在服务器上有一个有效的XML文档。

<?xml version='1.0'?>

必须位于XML的第一行,并检查标记之前是否没有空格。