如何使用Javascript加载XML文件内容?

8

我正在寻找一种将XML文件内容直接加载到Javascript变量中的方法。假设我有以下目录结构:

/index.html
/loader.js
/file.xml

index.html 文件中,有一个 <body> 标签,它的内容应该被 XML 文件的内容所替换。因此,如果 XML 文件包含以下内容:
<element>
    <item>Item One</item>
    <item>Item Two</item>
</element>

然后在动态加载之后,HTML将会变成这样:
...
<body>
<element>
...
</element>
</body>
...

我的问题是,在loader.js中可以使用什么函数将内容直接加载到变量中?我已经使用了XmlHttpRequest和ActiveX XMLDOM解析器,但它们都只给我一个结构数据模型,然后我必须筛选出我的元素。我不需要解析任何内容,我只想获取所有文件的内容。
注意:仅限HTML/Javascript,没有服务器端代码。

这在使用纯JavaScript时可能会很麻烦,你使用任何框架吗?(在有人说“使用jQuery”之前...) - roryf
2个回答

5

我想我可能已经弄清楚了。以下的方法似乎非常有效:

function loadFileToElement(filename, elementId)
{
    var xmlHTTP = new XMLHttpRequest();
    try
    {
    xmlHTTP.open("GET", filename, false);
    xmlHTTP.send(null);
    }
    catch (e) {
        window.alert("Unable to load the requested file.");
        return;
    }

    document.getElementById(elementId).innerHTML=xmlHTTP.responseText;
}

你可能需要考虑异步运行此操作。同步的 AJAX 请求会锁定浏览器的用户界面,给用户一种浏览器已经挂起的印象。 - Bryan Kyle
这将在客户端上运行,而不是在服务器上,因此我们不太担心性能。想象一下在桌面上双击HTML文件。 - Craig Otis
当我这样做时,我会得到CORS异常。 - alibttb

2
也许你可以读取XmlHttpRequests的responseText属性,以在解析之前获得纯文本?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接