2

我有一个需要在 JS 中处理的大型 XML。有没有更好的解决方案来复制/粘贴(从 xml 文件到 js 文件)并引用近 1000 行 xml 文件中的每一行?

是否可以将该 xml 文件“嵌入”为闪存中的资源?

4

2 回答 2

5

通常的解决方案是简单地将 XML 文件放在外面并使用XMLHttpRequest获取它:

function fetchXMLFile(url, callback) {
    var httpRequest = new XMLHttpRequest();
    httpRequest.onreadystatechange = function() {
        if (httpRequest.readyState === 4) {
            if (httpRequest.status === 200) {
                var xml = httpRequest.responseXML;
                if (callback) callback(xml);
            }
        }
    };
    httpRequest.open('GET', url);
    httpRequest.send(); 
}

fetchFile('myFile.xml', function(xml){
   // use the xml
});

如果你真的想在代码中嵌入数据,你将不得不在你最喜欢的编辑器中使用正则表达式,或者构建一个小工具来进行嵌入,但将大数据与源代码合并很少被认为是最佳实践。这两个部分通常具有不同的生命周期。

于 2013-01-10T12:40:31.153 回答
1

您可以尝试以十六进制或 json 表示形式编写它。

例如,“此字符串”将变为“\x74\x68\x69\x73\x20\x73\x74\x72\x69\x6e\x67”。有大量的在线工具可以为您做到这一点。例如这个,将完成工作但不会包含“\x”,因此 javascript'll 将其解释为普通字符串。要附加 \x 并具有正确的十六进制格式,请在任何 javascript 控制台中即时执行此函数:(当然用生成的十六进制数字替换引用的文本)

"7468697320737472696e67".replace(/([A-F\d]{2})/gi, "\\x$1"); // \x74...\x67

然后只需将此字符串复制到您的源中,它应该可以工作。如果你想解析 xml,看看这个- 另一个将你的 xml 转换为 json 的在线工具,有效的 javascript 对象;赋值时直接使用。

于 2013-01-10T13:39:08.117 回答